2100
Can bars have a grey backcolor and black border color for a summary-bar (EBN)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oBar,oBar1,oBar2
	LOCAL oChart
	LOCAL oItems
	LOCAL hSummaryJ,hSummaryK,hSummaryN,hTaskJ,hTaskK

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:RenderType := -2
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABN0GACAADACAxRDAMgBQKAAzQFAYahuGSGAAGMYxQgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQyDAAUIjOKsIhkGYcZAGQBJCjWGodQLOEgwHIERQjEyUJAGGQIHhyPYbUbGUpQHKkeRtGqgBgoKhKEouNYgAbGYIwTRsdyfDSXBpEWwbDgkNQwWTDNoRDIUQStCysaYjOpnfrUAJ1P7FdQ1NJkXRhGSSK7maapaiCSZ6STCMj1FhVKSNJ7DQKhGpgKh/ApgYpQOK4fLNXyRBK4QAyKA6bgPFZOZbFViaXY1V5bNKrcjhHQwAyHJ4XXRdV4YRAkUT4GqiJKGSYcQhuXZWbRqO6ABhef6DRThc6jKpFHIE4llEcojHqSZNgoIxnlgd5thsLREleL43gsYZ9BkaAYkMAgAm+CxGDWWAtiKCRfjcdRgHoHYnicUwgAIEIREAaQYkcQZUHIGRUDQJBOEYRAhDYCxGgMZAkCgdYQha" +;
		"XQIAYERwQuahXggdgeG6VZ4H4IhdiIGIOB8YIiGiHZZgqYpGF4KYHiKCI+CAU5jCiTQ2g0YhEFyax4gABAEIC")
			oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABU0IQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRhGcTAJBMIhiGQYAChEZxVhEMgzDjIAxSJAcQRFESaAABGCQGh+N4/S4NIi0CIsZQjCaiZ7pKA5bgMCo+UrNMixZQVCSOGChYRpCaZWpGGodQRUFbVHAlKypJKCKrEWSrDhuYAAW7XM7yBS1TzVNSuLZtaLqSroAJ1WTWMB0Ra8NzZEKfaZACj4arKejrRDCMAggI=")
			oAppearance:Add(3,"gBFLBCJwBAEHhEJAAEhABN8GACAADACAxRDgMQBQKAAzQFAcDBvBgABiHEZoJhUAIIRZGMIjFDcEwxDSMY7jcYAFgkNQwCUtcBIJDEMIoAJLIwyBKkNQ5AabYrmWJpMgOEAyDSJM70DCEThLD4aZJnOa5ZjmH5LRBQdBRXQMYwIGCiZQpeKqbgMBoJApCIJxdBNLAAf60LLtGJaSpKZouViJNjSBD4HQTL6BQwsKxIDqaaD/WpgFuLTjiRImShcMQXJYFbwTOyBbDjG7rJr+FptYRbdYYRQ8dy7Cywa6pOa8YwacotZrAdDXHTmHw1PTRNDmTRYRwfKqJZxieqwHoMLYgAC8Ni3OaoDAiCRQGiYZyHKaRSwPBInIYIIjeRgzBSAYKCEOySEodZbjybo0HefwfhMLQDnKeg9D6LwsCeV5unYQJYH8Lxvj+a5jgSfIYH8T43hOcZ5H+X4nh2fB6F+aABnOAIfFgFgGgGH43nICoCl+eA1n0fBhAgVZ5gS" +;
		"HoID4FoDCCCBqBuBYUjgfgigGURYg4JoJmKCBFBaChikiNgVEYYpokYMoMCMKJWCkcIjgiZg6E0Do3gUASAg=")
		oG2antt:Columns():Add("Task")
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,128)
			oChart:FirstVisibleDate := "01/01/2001"
			oBar := oChart:Bars:Item("Task")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
				oBar:SetProperty("Color",0x1000000)
			oBar1 := oChart:Bars:Item("Summary")
				oBar1:SetProperty("Def",4/*exBarHAlignCaption*/,18)
				oBar1:SetProperty("Color",0x2000000)
			oBar2 := oChart:Bars():CallMethod("Copy","Summary","SummaryN")
				oBar2:SetProperty("Def",4/*exBarHAlignCaption*/,18)
				oBar2:SetProperty("Color",0x3000000)
		oItems := oG2antt:Items()
			hSummaryJ := oItems:AddItem("Summary A")
			oItems:AddBar(hSummaryJ,"Summary","01/02/2001","01/02/2001","J")
			hTaskJ := oItems:InsertItem(hSummaryJ,,"Task A.1")
			oItems:AddBar(hTaskJ,"Task","01/02/2001","01/05/2001","J1")
			hTaskJ := oItems:InsertItem(hSummaryJ,,"Task A.2")
			oItems:AddBar(hTaskJ,"Task","01/04/2001","01/08/2001","J2")
			oItems:DefineSummaryBars(hSummaryJ,"J",-1,"<*>")
			hSummaryK := oItems:AddItem("Summary B")
			oItems:AddBar(hSummaryK,"Summary","01/02/2001","01/02/2001","K")
			hTaskK := oItems:InsertItem(hSummaryK,,"Task B.1")
			oItems:AddBar(hTaskK,"Task","01/02/2001","01/05/2001","K1")
			hTaskK := oItems:InsertItem(hSummaryK,,"Task B.2")
			oItems:AddBar(hTaskK,"Task","01/04/2001","01/08/2001","K2")
			oItems:DefineSummaryBars(hSummaryK,"K",-1,"<*>")
			hSummaryN := oItems:AddItem("Summary C")
			oItems:AddBar(hSummaryN,"SummaryN","01/02/2001","01/02/2001","SN")
			hTaskK := oItems:InsertItem(hSummaryN,,"Task B.1")
			oItems:AddBar(hTaskK,"Task","01/02/2001","01/05/2001","N1")
			hTaskK := oItems:InsertItem(hSummaryN,,"Task B.2")
			oItems:AddBar(hTaskK,"Task","01/04/2001","01/08/2001","N2")
			oItems:DefineSummaryBars(hSummaryN,"SN",-1,"<*>")
			oItems:SetProperty("ItemBar",0,"<K*>",33/*exBarColor*/,255)
			oItems:SetProperty("ItemBar",0,"<N*>",33/*exBarColor*/,8421504)
			oItems:SetProperty("ExpandItem",0,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2099
How can I display UNICODE characters

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL oStdFont

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oStdFont := oG2antt:Font()
			oStdFont:Name := "Arial Unicode"
			oStdFont:Size := 22
		oG2antt:HeaderVisible := 0/*exHeaderHidden*/
		oG2antt:DefaultItemHeight := 48
		oG2antt:Columns():Add(""):SetProperty("Def",17/*exCellValueFormat*/,1)
		oItems := oG2antt:Items()
			oItems:AddItem("Ӓӓ")
			oItems:AddItem("ᦜᦝ;ᦞ")
			oItems:AddItem("ɮɭ;ɯ")
			oItems:AddItem("勳勴勵勶")
			oItems:SetProperty("FormatCell",oItems:AddItem(oG2antt:Version()),0,"(value lfind `UNICODE`) < 0 ? `<fgcolor=FF0000><b>!UNICODE!</b> version</fgcolor> required: ` + value : `` ")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2098
How can I display 12-hour time (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oChart:Level(0):Label := 4096
			oLevel := oChart:Level(1)
				oLevel:Unit := 65536/*exHour*/
				oLevel:FormatLabel := "(0 := hour(dvalue)) < 12 ? ( `<fgcolor=808080>` + ( =:0 = 0 ? 12 : =:0 ) + `</fgcolor>` ) : (=:0 - 12)"
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2097
How can I display 12-hour time (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oChart:Level(0):Label := 4096
			oChart:Level(1):Label := "<%h12%>"
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2096
How do I scale to hours

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oChart:Level(0):Label := 4096
			oChart:Level(1):Label := 65536
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2095
How do I display the position of the item with 0-padding

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Items"):FormatColumn := "((1 apos ``) lpad `00`) + `. `  + value"
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
			oItems:AddItem("Item D")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2094
Can I format the label in row 3 below to show day numbers, only for Mondays each week (sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1,oLevel2

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/31/2009"
			oChart:LevelCount := 3
			oChart:FirstWeekDay := 1/*exMonday*/
			oLevel := oChart:Level(0)
				oLevel:Label := "<%mmmm%> <%yyyy%>"
				oLevel:Alignment := 1/*CenterAlignment*/
				oLevel:Unit := 16/*exMonth*/
			oLevel1 := oChart:Level(1)
				oLevel1:Unit := 256/*exWeek*/
				oLevel1:Label := "Week <%ww%>"
				oLevel1:Alignment := 1/*CenterAlignment*/
			oLevel2 := oChart:Level(2)
				oLevel2:Unit := 4096/*exDay*/
				oLevel2:FormatLabel := "weekday(dvalue) = 1 ? day(dvalue): ''"
			oChart:UnitWidth := 23

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2093
Can I format the label in row 3 below to show day numbers, only for Mondays each week (sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oLevel,oLevel1,oLevel2

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:FirstVisibleDate := "01/31/2009"
			oChart:LevelCount := 3
			oChart:FirstWeekDay := 1/*exMonday*/
			oLevel := oChart:Level(0)
				oLevel:Label := "<%mmmm%> <%yyyy%>"
				oLevel:Alignment := 1/*CenterAlignment*/
				oLevel:Unit := 16/*exMonth*/
			oLevel1 := oChart:Level(1)
				oLevel1:Unit := 256/*exWeek*/
				oLevel1:Label := "Week <%ww%>"
				oLevel1:Alignment := 1/*CenterAlignment*/
			oLevel2 := oChart:Level(2)
				oLevel2:Unit := 4096/*exDay*/
				oLevel2:FormatLabel := "weekday(dvalue) = 1 ? value : ''"
			oChart:UnitWidth := 23

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2092
How can I change the caption for all bars

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Tasks")
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/01/2017"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,128)
			oBar := oChart:Bars():Add("Task%Progress")
				oBar:Shortcut := "Task"
				oBar:SetProperty("Def",14/*exBarShowPercentCaption*/,.T.)
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("Task 1"),"Task","08/02/2017","08/06/2017")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","08/03/2017","08/09/2017")
			oItems:AddBar(oItems:AddItem("Task 3"),"Task","08/04/2017","08/13/2017")
			oItems:AddBar(oItems:AddItem("Task 4"),"Task","08/05/2017","08/16/2017")
			oItems:SetProperty("ItemBar",0,"<*>",14/*exBarShowPercentCaption*/,.F.)
			oItems:SetProperty("ItemBar",0,"<*>",3/*exBarCaption*/,"<%= %C0 replace `Task` with `Task<off 4><b>` %>")
			oItems:SetProperty("ItemBar",0,"<*>",4/*exBarHAlignCaption*/,18)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2091
Can't get the +/- to be displayed on a divider item. What else can I do

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:TreeColumnIndex := 0
		oG2antt:MarkSearchColumn := .F.
		oG2antt:FullRowSelect := 0/*exColumnSel*/
		oG2antt:HeaderAppearance := -1/*0xfffffff8+Bump+Sunken*/
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1"):Width := 32
			oColumns:Add("C2"):FormatColumn := "1 index ``"
		oItems := oG2antt:Items()
			h := oItems:AddItem("Cell 1")
			oItems:SetProperty("CellSingleLine",h,1,0/*exCaptionWordWrap*/)
			h := oItems:AddItem("This is bit of text merges all cells in the item (divider shows no +/-)")
			oItems:SetProperty("ItemDivider",h,0)
			oItems:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
			oItems:SetProperty("ItemDividerLine",h,0/*EmptyLine*/)
			oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Cell 3")
			h := oItems:AddItem("This is bit of text merges all cells in the item (merge shows +/-)")
			oItems:SetProperty("ItemBackColor",h,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
			oItems:SetProperty("CellMerge",h,0,1)
			oItems:InsertItem(h,,"Child 3")
			oItems:InsertItem(h,,"Child 4")
			oItems:SetProperty("ExpandItem",h,.T.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2090
How can I display one or more columns on the same bar

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	LOCAL l
	oItems := oG2antt:Items()
		oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
		oItems:AddBar(Item,"Summary","12/02/2017","12/02/2017")
		oItems:DefineSummaryBars(Item,"",-3,"")
		l := oItems:GroupItem(Item)
		oItems:SetProperty("CellSingleLine",Item,l,0/*exCaptionWordWrap*/)
		oItems:SetProperty("CellBold",Item,l,.T.)
		oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
	oG2antt:Chart():SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar,oBar1
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzVIUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxINgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZxBBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +;
		"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==")
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
			oBar := oChart:Bars:Item("Summary")
				oBar:StartShape := 0/*exShapeIconEmpty*/
				oBar:EndShape := 0/*exShapeIconEmpty*/
				oBar:Shape := 1/*exShapeSolid*/
				oBar:SetProperty("Color",0x1000000)
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=%513%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
			oBar1 := oChart:Bars:Item("Task")
				oBar1:Pattern := 32/*exPatternBox*/
				oBar1:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 164,164,164 } )  , .F. ))
				oBar1:SetProperty("StartColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
				oBar1:SetProperty("EndColor",oBar1:StartColor())
				oBar1:SetProperty("Def",3/*exBarCaption*/,"<%= `<font ;6><fgcolor=0000FF><i>` + %C0 + ` ` + %C1 + ` ` + %C2 %>")
				oBar1:SetProperty("Def",4/*exBarHAlignCaption*/,13)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2"):Editor():EditType := 1/*EditType*/
			oColumns:Add("C3"):Editor():EditType := 1/*EditType*/
			oColumn := oColumns:Add("Pos")
				oColumn:FormatColumn := "1 pos ``"
				oColumn:AllowGroupBy := .F.
				oColumn:Position := 0
				oColumn:Width := 48
				oColumn:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:AllowGroupBy := .T.
		oG2antt:HasLines := 0/*exNoLine*/
		oG2antt:LinesAtRoot := 0/*exNoLinesAtRoot*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.3")
			oItems:SetProperty("CellValue",h,2,"SubItem A.4")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.5")
			oItems:SetProperty("CellValue",h,2,"SubItem A.6")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.7")
			oItems:SetProperty("CellValue",h,2,"SubItem A.8")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.3")
			oItems:SetProperty("CellValue",h,2,"SubItem B.4")
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2089
How can I associate a box/note to a date into the control's header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems,oItems1
	LOCAL oNote
	LOCAL oNotes
	LOCAL hLocked

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ScrollBySingleLine := .T.
		oG2antt:Columns():Add("Task")
		oG2antt:HeaderHeight := 17
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:SetProperty("PaneWidth",.F.,96)
			oChart:LevelCount := 2
			oChart:SetProperty("SelBackColor",oG2antt:SelBackColor())
		oItems := oG2antt:Items()
			oItems:AddItem("Item 1")
			oItems:SetProperty("SelectItem",oItems:AddItem("Item 2"),.T.)
			oItems:AddItem("Item 3")
		oNotes := oG2antt:Chart():Notes()
			oItems1 := oG2antt:Items()
				oItems1:SetProperty("LockedItemCount",0/*exTop*/,1)
				hLocked := oItems1:LockedItem(0/*exTop*/,0)
				oItems1:SetProperty("ItemHeight",hLocked,1)
			oNote := oNotes:Add("header",hLocked,"01/07/2001","Date:<br><%dd%>/<%mm%><br><b><%yyyy%></b>")
				oNote:SetProperty("PartVisible",0/*exNoteStart*/,.T.)
				oNote:SetProperty("PartText",0/*exNoteStart*/,"<b><%d%></b>")
				oNote:SetProperty("PartCanMove",1/*exNoteEnd*/,.T.)
				oNote:SetProperty("PartCanMove",0/*exNoteStart*/,.T.)
				oNote:SetProperty("PartVOffset",0/*exNoteStart*/,-9)
				oNote:SetProperty("PartVOffset",1/*exNoteEnd*/,20)
				oNote:SetProperty("PartHOffset",1/*exNoteEnd*/,20)
				oNote:SetProperty("PartBackColor",0/*exNoteStart*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,0 } )  , .F. ))
				oNote:SetProperty("PartFixedWidth",0/*exNoteStart*/,18)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2088
How can I define a column of button type

PROCEDURE OnButtonClick(oG2antt,Item,ColIndex,Key)
	LOCAL oItems
	oItems := oG2antt:Items()
		DevOut( Transform(oItems:CellValue(Item,ColIndex),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oG2antt,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/

		oG2antt:BeginUpdate()
		oColumn := oG2antt:Columns():Add("Button")
			oColumn:SetProperty("Def",2/*exCellHasButton*/,.T.)
			oColumn:SetProperty("Def",3/*exCellButtonAutoWidth*/,.F.)
			oColumn:FormatColumn := "``"
			oColumn:AllowSizing := .F.
			oColumn:Width := 48
		oG2antt:Columns():Add("Second"):FormatColumn := "` Item ` + 1 index ``"
		oItems := oG2antt:Items()
			oItems:AddItem("Button 1")
			oItems:AddItem("Button 2")
			oItems:AddItem("Button 3 ")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2087
Is it possible to configure different colour/icon when there is a active filter

PROCEDURE OnFilterChange(oG2antt)
	oG2antt:SetProperty("Background",0/*exHeaderFilterBarButton*/,oG2antt:FormatABC("value = 0 ? 0x1000001 : 0x10000FF ",oG2antt:Columns:Item(0):FilterType()))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oColumn,oColumn1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:FilterChange := {|| OnFilterChange(oG2antt)} /*Occurs when the filter was changed.*/

		oG2antt:BeginUpdate()
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:RenderType := -16777216
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQgmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThdr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA")
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:ShowFocusRect := .F.
		oG2antt:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000001)
		oG2antt:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oG2antt:HeaderVisible := 1/*exHeaderVisibleExtendLevels*/
		oColumn := oG2antt:Columns():Add("Filter")
			oColumn:DisplayFilterButton := .T.
			oColumn:AllowSort := .F.
			oColumn:AllowDragging := .F.
			oColumn:FilterList := 256/*exShowCheckBox*/
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:Filter := "Item B"
			oColumn1:FilterType := 240/*exFilter*/
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2086
ADODB Requery sample

PROCEDURE OnButtonClick(oG2antt,Item,ColIndex,Key)
	LOCAL cmd
	cmd := CreateObject("ADODB.Command")
		cmd:ActiveConnection := oG2antt:DataSource():ActiveConnection()
		cmd:CommandText := "INSERT INTO Orders (EmployeeID) VALUES(12345)"
		cmd:CommandType := 1/*adCmdText*/
		cmd:Execute()
	oG2antt:DataSource():Requery()
RETURN

PROCEDURE OnError(oG2antt,Error,Description)
	DevOut( Transform(Description,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oG2antt,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/
		oG2antt:Error := {|Error,Description| OnError(oG2antt,Error,Description)} /*Fired when an internal error occurs.*/

		oG2antt:BeginUpdate()
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:ColumnAutoResize := .F.
		rs := CreateObject("ADODB.Recordset")
			rs:Open("Select * From Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb",1/*adOpenKeyset*/,3/*adLockOptimistic*/)
		oG2antt:DataSource := rs
		oG2antt:ConditionalFormats():Add("%1=12345"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oItems := oG2antt:Items()
			oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
			h := oItems:LockedItem(0/*exTop*/,0)
			oItems:SetProperty("ItemDivider",h,0)
			oItems:SetProperty("CellHasButton",h,0,.T.)
			oItems:SetProperty("CellValue",h,0,"Requery (add a new record, using ADODB.Command)")
			oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2085
I am skinning the control's header-bar, but the background of the header-bar is shown on each item in the filter-bar drop down panel. What can I do

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxRDgMQBQKAAzQFAYcBqGqGAAGQZxYgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQGhsCYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU8lORLUi+M4zSBPcZVTRtGShPDBKTjMKKYgkG4lVpRNa0PC1GTzQ6mazkKQLRADDIDVbAeL3LiMBy9LyLLItQALByua5mWhbcZyBCOPgBTrRb5zO58FjuTK7YLjMB7NrUNYtFaUMy2OpOCADIaecTNcaWLxPF2MY1HWYxVj2Jw3DuRJonKYBgggSRAlIYw6B0ThGFgPAkFUDAhBMfZRiGNAkFECZnm4YQdneJwqnsSQrGAAhWAIJBJBIQgFCQIBiEIAglgqYo0i4V4MEgRI9gSToYFS" +;
		"b4Fk6Y4+BmBZhFOJgTC8TBogQAArgqco4muCZOkOMJtgmYpIjYKg7GKE4uCUK4AAKKg2DwI4DiCZw5k6KJ2D6D4OHiag4DwIxiiQAArAqMosnEPBPAOIhOg+DozjIJ4PGSY4iEwPAkhKLhHUUSQsnKFCnkYU9MjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDhQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARViHH4HQOYmxuCpF2MsecEQVBvGQCcIQvA6i2CAAIARAQ=")
			oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzQFAYcBqGqGAAGQZxYgmFgAQhFcZQSKUOQTDKMIziYBYJhEMwwDhEIwjHCEEhsGIbJAGQBJCjWGodQLOEgzNC0IxNFCQILhEZJADKII8TTOU5UPRESwTE4cKBmKhQCo2NpKR7VUTxCKQahLLivoCjBT8EzHMqtIzrCA6MpaP4pQjKcqwHJ8YyHEi0ZrjazKaj6T5AXDUcaWbbNVx3PK3aioOpLZrqOZZYzYFoABTuJzPMSyIhxXD8cweaZvSpLExVYK9BY3PbKMgxC77QgTIpDaQMNS6PjtF43PAALLFUaNYzoOKzABMHATBIXAYJCwIIR5G7ID4BbQcCQAHL9DBaEEIAEEISgGhMGZQmocgymmIRQkIEQ2BcGgbEIRQci8XaMBqTRVgSAZHG+S5pnOep+D6f4vjec5zn0fpfmgBgAH6TRoBYBoAh+eAmAiAgPFgNArgOQpIESdoEmCOAOAq" +;
		"BYfFGAgaEaBgYHYFYFmIB5UiGCJUgKCgmgeYoHk4BgCmKRQiCwApgHgYgyH8B54lQU4NkMeJlBoDgjkiXBTg0R54iYIR+koeQVBoKpkgkChKhEJBkF4SFEjkDgJhFQoeEmDJlBeehUhWJQJGIXoICWOQ6FeFIlhkfhlDsSJpiQVoamaSY2G6G5nAmRhpCOH5pkwVYdmeCZmHqHpnkmdhzhmaAIFiax8AABAEICA==")
		oG2antt:SetProperty("BackColorHeader",0x1000000)
		oG2antt:SetProperty("ForeColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oG2antt:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x2000000)
		oG2antt:SetProperty("Background",26/*exBackColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oG2antt:SetProperty("Background",27/*exForeColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oG2antt:SetProperty("Background",20/*exSelBackColorFilter*/,0x1ff8000)
		oG2antt:SetProperty("Background",21/*exSelForeColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oG2antt:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
		oG2antt:HeaderHeight := 24
		oG2antt:SetProperty("BackColorLevelHeader",oG2antt:BackColor())
		oColumn := oG2antt:Columns():Add("Filter")
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
			oColumn:SetProperty("Def",52/*exHeaderPaddingLeft*/,2)
			oColumn:SetProperty("Def",53/*exHeaderPaddingRight*/,2)
		oItems := oG2antt:Items()
			oItems:AddItem("A")
			oItems:AddItem("B")
			oItems:AddItem("C")
			oItems:AddItem("D")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2084
I specify the ItemHeight for each row, but as soon as I click the chart section, the item's height is restored to default (not working). What could be the cause

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ScrollBySingleLine := .T.
		oG2antt:Columns():Add("Types")
		oG2antt:DrawGridLines := 1/*exHLines*/
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:DrawGridLines := 1/*exHLines*/
			oChart:AllowCreateBar := 1/*exCreateBarAuto*/
			oChart:AllowLinkBars := .F.
			oChart:ResizeUnitScale := 65536/*exHour*/
			oChart:SetProperty("PaneWidth",.F.,112)
			oChart:FirstVisibleDate := "01/01/2001"
			oBar := oChart:Bars:Item("Task")
				oBar:OverlaidType := 3/*exOverlaidBarsStack*/
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=%9%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
		oItems := oG2antt:Items()
			h := oItems:AddItem("ItemMinHeight")
			oItems:AddBar(h,"Task","01/07/2001","01/10/2001","A1")
			oItems:AddBar(h,"Task","01/08/2001","01/12/2001","A2")
			oItems:SetProperty("ItemMinHeight",h,64)
			oItems:AddBar(oItems:AddItem("Default (One)"),"Task","01/07/2001","01/10/2001","A3")
			h := oItems:AddItem("Default (Two)")
			oItems:AddBar(h,"Task","01/07/2001","01/10/2001","A4")
			oItems:AddBar(h,"Task","01/08/2001","01/12/2001","A5")
			h := oItems:AddItem("ItemFixedHeight")
			oItems:AddBar(h,"Task","01/07/2001","01/10/2001","A6")
			oItems:AddBar(h,"Task","01/08/2001","01/12/2001","A7")
			oItems:SetProperty("ItemMinHeight",h,20)
			oItems:SetProperty("ItemMaxHeight",h,20)
			h := oItems:AddItem("ItemMaxHeight")
			oItems:AddBar(h,"Task","01/07/2001","01/10/2001","A8")
			oItems:AddBar(h,"Task","01/08/2001","01/12/2001","A9")
			oItems:SetProperty("ItemMaxHeight",h,24)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2083
The ItemHeight property is not working (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oG2antt:ScrollBySingleLine := .T.
		oG2antt:Columns():Add("Column"):Width := 128
		oItems := oG2antt:Items()
			oItems:SetProperty("CellSingleLine",oItems:AddItem("This is a bit of text that should break the line"),0,0/*exCaptionWordWrap*/)
			h := oItems:AddItem("")
			oItems:SetProperty("ItemDivider",h,0)
			oItems:SetProperty("SelectableItem",h,.F.)
			oItems:SetProperty("ItemDividerLineAlignment",h,1/*DividerCenter*/)
			oItems:SetProperty("ItemHeight",h,3)
			oItems:SetProperty("CellSingleLine",oItems:AddItem("This is a bit of text that should break the line"),0,0/*exCaptionWordWrap*/)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2082
The ItemHeight property is not working (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oG2antt:ScrollBySingleLine := .T.
		oColumn := oG2antt:Columns():Add("Column")
			oColumn:Width := 128
			oColumn:SetProperty("Def",16/*exCellSingleLine*/,0)
		oItems := oG2antt:Items()
			oItems:AddItem("This is a bit of text that should break the line")
			h := oItems:AddItem("")
			oItems:SetProperty("ItemDivider",h,0)
			oItems:SetProperty("SelectableItem",h,.F.)
			oItems:SetProperty("ItemDividerLineAlignment",h,1/*DividerCenter*/)
			oItems:SetProperty("ItemMinHeight",h,3)
			oItems:SetProperty("ItemMaxHeight",h,3)
			oItems:AddItem("This is a bit of text that should break the line")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2081
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeCheckColumns

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oG2antt:HeaderAppearance := 4/*Etched*/
		oColumns := oG2antt:Columns()
			oColumns:Add("City")
			oColumns:Add("Start"):Visible := .F.
			oColumns:Add("End"):Visible := .F.
		oG2antt:SetProperty("Description",26/*exColumnsFloatBar*/,"Show/Hide")
		oG2antt:ColumnsFloatBarSortOrder := 1/*SortAscending*/
		oG2antt:ColumnsFloatBarVisible := 2/*exColumnsFloatBarVisibleIncludeCheckColumns*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2080
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeHiddenColumn

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oG2antt:HeaderAppearance := 4/*Etched*/
		oColumns := oG2antt:Columns()
			oColumns:Add("City")
			oColumns:Add("Start"):Visible := .F.
			oColumns:Add("End"):Visible := .F.
		oG2antt:SetProperty("Description",26/*exColumnsFloatBar*/,"Show")
		oG2antt:ColumnsFloatBarVisible := -1/*exColumnsFloatBarVisibleIncludeHiddenColumns*/
		oG2antt:ColumnsFloatBarSortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2079
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeGroupByColumns

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oG2antt:HeaderAppearance := 4/*Etched*/
		oColumns := oG2antt:Columns()
			oColumns:Add("City")
			oColumns:Add("Start")
			oColumns:Add("End")
		oG2antt:AllowGroupBy := .T.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:SetProperty("BackColorSortBar",AutomationTranslateColor( GraMakeRGBColor  ( { 250,250,250 } )  , .F. ))
		oG2antt:SetProperty("Description",26/*exColumnsFloatBar*/,"Group-By")
		oG2antt:ColumnsFloatBarVisible := 1/*exColumnsFloatBarVisibleIncludeGroupByColumns*/
		oG2antt:ColumnsFloatBarSortOrder := 1/*SortAscending*/
		oG2antt:Columns:Item("City"):SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2078
How can I advance to the next line, once the user presses the ENTER key

PROCEDURE OnKeyDown(oG2antt,KeyCode,Shift)
	DevOut( "KeyCode Before:" )
	DevOut( Transform(KeyCode,"") )
	KeyCode := oG2antt:FormatABC("value = 13 ? 40 : value",KeyCode)
	DevOut( "KeyCode After:" )
	DevOut( Transform(KeyCode,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumns
	LOCAL oEditor,oEditor1
	LOCAL oItems
	LOCAL h0

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:KeyDown := {|KeyCode,Shift| OnKeyDown(oG2antt,KeyCode,Shift)} /*Occurs when the user presses a key while an object has the focus.*/

		oG2antt:BeginUpdate()
		oColumns := oG2antt:Columns()
			oEditor := oColumns:Add("A"):Editor()
				oEditor:Appearance := 4/*EtchedApp*/
				oEditor:EditType := 1/*EditType*/
			oEditor1 := oColumns:Add("B"):Editor()
				oEditor1:Appearance := 4/*EtchedApp*/
				oEditor1:EditType := 1/*EditType*/
		oItems := oG2antt:Items()
			h0 := oItems:AddItem("Item A.1")
			oItems:SetProperty("CellValue",h0,1,"Item B.1")
			h0 := oItems:AddItem("Item A.2")
			oItems:SetProperty("CellValue",h0,1,"Item B.2")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2077
I am using AddNew to add new records, but I can not see them into the control

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,1),oItems:CellValue(Item,2))
RETURN

PROCEDURE OnButtonClick(oG2antt,Item,ColIndex,Key)
	LOCAL oRecordset
	oRecordset := oG2antt:DataSource()
		oRecordset:AddNew()
		oRecordset:Fields:Item("Name"):Value := "Task New"
		oRecordset:Update()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oFields
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/
		oG2antt:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oG2antt,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/

		oG2antt:BeginUpdate()
		oG2antt:HeaderAppearance := 4/*Etched*/
		rs := CreateObject("ADODB.Recordset")
			oFields := rs:Fields()
				oFields:Append("Name",8/*adBSTR*/)
				oFields:Append("Start",7/*adDate*/)
				oFields:Append("End",7/*adDate*/)
			rs:Open()
			rs:AddNew()
			rs:Fields:Item("Name"):Value := "Task A"
			rs:Fields:Item("Start"):Value := "01/04/2001"
			rs:Fields:Item("End"):Value := "01/10/2001"
			rs:Update()
			rs:AddNew()
			rs:Fields:Item("Name"):Value := "Task B"
			rs:Fields:Item("Start"):Value := "01/05/2001"
			rs:Fields:Item("End"):Value := "01/11/2001"
			rs:Update()
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item("Start"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item("End"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oItems := oG2antt:Items()
			oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
			h := oItems:LockedItem(0/*exTop*/,0)
			oItems:SetProperty("ItemDivider",h,0)
			oItems:SetProperty("CellHasButton",h,0,.T.)
			oItems:SetProperty("CellValue",h,0,"AddNew")
			oItems:SetProperty("CellHAlignment",h,0,1/*CenterAlignment*/)
		oG2antt:DetectAddNew := .T.
		oG2antt:DetectDelete := .T.
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2076
How can I create a new ADO recordset

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,1),oItems:CellValue(Item,2))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oFields
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		rs := CreateObject("ADODB.Recordset")
			oFields := rs:Fields()
				oFields:Append("Name",8/*adBSTR*/)
				oFields:Append("Start",7/*adDate*/)
				oFields:Append("End",7/*adDate*/)
			rs:Open()
			rs:AddNew()
			rs:Fields := "Task A"
			rs:Fields := "01/04/2001"
			rs:Fields := "01/10/2001"
			rs:Update()
			rs:AddNew()
			rs:Fields := "Task B"
			rs:Fields := "01/05/2001"
			rs:Fields := "01/11/2001"
			rs:Update()
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item("Start"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item("End"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2075
Do do I get the DAO version I have installed

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		DevOut( CreateObject("DAO.DBEngine.35"):Version():Version() )
		DevOut( CreateObject("DAO.DBEngine.36"):Version():Version() )
		DevOut( CreateObject("DAO.DBEngine.120"):Version():Version() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2074
How do I get a list of interfaces the object implemenets

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oPrivDBEngine := CreateObject("DAO.DBEngine.120")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb"):OpenRecordset("Orders")
		DevOut( Transform(CreateObject("Exontrol.PropertiesList"),"") )
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2073
Do do I get the ADO version I have installed

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		DevOut( "ADO Version:" )
		DevOut( CreateObject("ADODB.Connection"):Version():Version() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2072
DAO, ACCDB, 120

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oPrivDBEngine := CreateObject("DAO.DBEngine.120")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb"):OpenRecordset("Orders")
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2071
DAO, MDB, 120

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oPrivDBEngine := CreateObject("DAO.DBEngine.120")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExG2antt\sample\Access\misc.mdb"):OpenRecordset("Orders")
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2070
DAO, MDB

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		oPrivDBEngine := CreateObject("DAO.DBEngine.36")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExG2antt\sample\Access\misc.mdb"):OpenRecordset("Orders")
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2069
ADODB, ACCDB, x64

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		rs := CreateObject("ADODB.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb",1/*adOpenKeyset*/,1/*adLockReadOnly*/)
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2068
ADOR, ACCDB

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2067
ADODB, MDB

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		rs := CreateObject("ADODB.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2066
ADOR, MDB

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Task",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .F.
		rs := CreateObject("ADOR.Recordset")
			rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oG2antt:DataSource := rs
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "08/04/1994"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oG2antt:Columns:Item(2):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
		oG2antt:Columns:Item(4):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2065
I am using exCellValueToItemBarProperty, Is it possible to “disable” this synchronisation for one (or several) item (sample-2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oColumns := oG2antt:Columns()
			oColumns:Add("Tasks")
			oColumns:Add("Start"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
			oColumns:Add("End"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "09/20/2006"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,196)
			oChart:AllowCreateBar := 1/*exCreateBarAuto*/
		oItems := oG2antt:Items()
			oItems:AllowCellValueToItemBar := .T.
			oItems:AddBar(oItems:AddItem("Task 1"),"Task","09/21/2006","09/24/2006")
			h := oItems:AddItem("Task 2")
			oItems:AddBar(h,"Task","09/22/2006","09/25/2006")
			oItems:SetProperty("ItemBold",h,.T.)
			oItems:CellValueToItemBar(h,1,1/*exBarStart*/,"newbar")
			oItems:CellValueToItemBar(h,2,2/*exBarEnd*/,"newbar")
			oItems:AddBar(oItems:AddItem("Task 3"),"Task","09/23/2006","09/26/2006")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2064
I am using exCellValueToItemBarProperty, Is it possible to “disable” this synchronisation for one (or several) item (sample-1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oColumns := oG2antt:Columns()
			oColumns:Add("Tasks")
			oColumns:Add("Start"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
			oColumns:Add("End"):SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "09/20/2006"
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,196)
		oItems := oG2antt:Items()
			oItems:AllowCellValueToItemBar := .T.
			oItems:AddBar(oItems:AddItem("Task 1"),"Task","09/21/2006","09/24/2006")
			h := oItems:AddItem("Task 2")
			oItems:AddBar(h,"Task","09/22/2006","09/25/2006")
			oItems:SetProperty("FormatCell",h,1,"``")
			oItems:SetProperty("FormatCell",h,2,"``")
			oItems:SetProperty("ItemBold",h,.T.)
			oItems:AddBar(oItems:AddItem("Task 3"),"Task","09/23/2006","09/26/2006")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2063
How can I use the CRD (eXCRD format)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3
	LOCAL oItems
	LOCAL dih,h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:SelBackMode := 1/*exTransparent*/
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:SetProperty("Def",32/*exCellFormatLevel*/,"[b=0]60;1[b=15]:60,((20;" + CHR(34) + "<fgcolor=808080>Dateigröße" + CHR(34) + "[b=1][a=2]:120,2[b=15])/(20;" + CHR(34) + "<fgcolor=808080>Erstellt am" + CHR(34) + "[a=2]:120,3[b=15])/(20;" + CHR(34) + "<fgcolor=808080>Zuletzt bearbeitet" + CHR(34) + "[b=4][a=2]:120,4[b=15]))")
			oColumn:AllowSort := .F.
		oG2antt:Columns():Add(Transform(1,"")):Visible := .F.
		oColumn1 := oG2antt:Columns():Add(Transform(2,""))
			oColumn1:Visible := .F.
			oColumn1:Editor():EditType := 1/*EditType*/
			oColumn1:FormatColumn := "1 index `A-Z`"
		oColumn2 := oG2antt:Columns():Add(Transform(3,""))
			oColumn2:Visible := .F.
			oColumn2:Editor():EditType := 1/*EditType*/
			oColumn2:FormatColumn := "1 index ``"
		oColumn3 := oG2antt:Columns():Add(Transform(4,""))
			oColumn3:Visible := .F.
			oColumn3:Editor():EditType := 1/*EditType*/
			oColumn3:FormatColumn := "date(``)"
		dih := 48
		oG2antt:DefaultItemHeight := dih
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:GridLineStyle := 48/*exGridLinesSolid*/
		oChart := oG2antt:Chart()
			oChart:DrawGridLines := -2/*exRowLines*/
			oChart:GridLineStyle := 48/*exGridLinesSolid*/
			oChart:SetProperty("PaneWidth",.F.,256)
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:Bars:Item("Task"):OverlaidType := 515/*exOverlaidBarsStackAutoArrange+exOverlaidBarsStack*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("")
			oItems:SetProperty("CellValue",h,1,"One")
			oItems:AddBar(h,"Task","01/02/2001","01/12/2001","A")
			oItems:AddBar(h,"Task","01/04/2001","01/14/2001","B")
			oItems:SetProperty("ItemMaxHeight",h,dih)
			h := oItems:AddItem("")
			oItems:SetProperty("CellValue",h,1,"Two")
			oItems:AddBar(h,"Task","01/05/2001","01/10/2001","A")
			oItems:AddBar(h,"Task","01/02/2001","01/04/2001","B")
			oItems:AddBar(h,"Task","01/05/2001","01/14/2001","B2")
			oItems:SetProperty("ItemMaxHeight",h,dih)
			h := oItems:AddItem("")
			oItems:SetProperty("CellValue",h,1,"Three")
			oItems:AddBar(h,"Task","01/05/2001","01/10/2001","A")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2062
Type of wraps the cell's caption support (Sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oColumns
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:HeaderSingleLine := .F.
		oG2antt:HeaderHeight := 36
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:ColumnAutoResize := .F.
		oG2antt:ScrollBySingleLine := .T.
		oColumns := oG2antt:Columns()
			oColumn := oColumns:Add("Single-Line (exCaptionSingleLine)")
				oColumn:Width := 96
				oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
				oColumn:SetProperty("Def",16/*exCellSingleLine*/,-1)
			oColumn1 := oColumns:Add("Word-Wrap (exCaptionWordWrap)")
				oColumn1:Width := 96
				oColumn1:SetProperty("Def",17/*exCellValueFormat*/,1)
				oColumn1:SetProperty("Def",16/*exCellSingleLine*/,0)
				oColumn1:FormatColumn := "%0"
			oColumn2 := oColumns:Add("Break-Wrap (exCaptionBreakWrap)")
				oColumn2:Width := 96
				oColumn2:SetProperty("Def",17/*exCellValueFormat*/,1)
				oColumn2:SetProperty("Def",16/*exCellSingleLine*/,1)
				oColumn2:FormatColumn := "%0"
		oItems := oG2antt:Items()
			oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
			oItems:AddItem("This is the <b>first</b> line.\r\nThis is the <b>second</b> line.\r\nThis is the <b>third</b> line.")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2061
Type of wraps the cell's caption support (Sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:HeaderSingleLine := .F.
		oG2antt:HeaderHeight := 36
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:ColumnAutoResize := .F.
		oG2antt:ScrollBySingleLine := .T.
		oG2antt:Columns():Add("Default"):Width := 128
		oItems := oG2antt:Items()
			h := oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
			h := oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
			oItems:SetProperty("CellValueFormat",h,0,1/*exHTML*/)
			h := oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
			oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
			h := oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
			oItems:SetProperty("CellValueFormat",h,0,1/*exHTML*/)
			oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
			h := oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
			oItems:SetProperty("CellSingleLine",h,0,1/*exCaptionBreakWrap*/)
			h := oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
			oItems:SetProperty("CellValueFormat",h,0,1/*exHTML*/)
			oItems:SetProperty("CellSingleLine",h,0,1/*exCaptionBreakWrap*/)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2060
Can I break the cell's caption using the line break <br> or \r\n (Sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:ColumnAutoResize := .F.
		oG2antt:ScrollBySingleLine := .T.
		oG2antt:Columns():Add("Default"):Width := 128
		oItems := oG2antt:Items()
			oItems:SetProperty("CellSingleLine",oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line."),0,1/*exCaptionBreakWrap*/)
			oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2059
Can I break the cell's caption using the line break <br> or \r\n (Sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:ColumnAutoResize := .F.
		oG2antt:ScrollBySingleLine := .T.
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:Width := 128
			oColumn:SetProperty("Def",16/*exCellSingleLine*/,1)
		oItems := oG2antt:Items()
			oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
			oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2058
The histogram is showing empty space, when expanding an item. What could be wrong

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := 5/*exGroupLinesOutside*/
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:SetProperty("PaneWidth",.F.,128)
			oChart:FirstVisibleDate := "01/01/2001"
			oChart:HistogramVisible := .T.
			oChart:HistogramHeight := 48
			oChart:HistogramView := 1392/*exHistogramNoGrouping+exHistogramLeafItems+exHistogramAllItems*/
			oChart:Bars:Item("Task"):HistogramPattern := 6/*exPatternBDiagonal*/
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Project 1")
			oItems:AddBar(oItems:InsertItem(h,,"Item 1"),"Task","01/02/2001","01/04/2001")
			oItems:AddBar(oItems:InsertItem(h,,"Item 2"),"Task","01/03/2001","01/05/2001")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Project 2")
			oItems:AddBar(oItems:InsertItem(h,,"Item 1"),"Task","01/07/2001","01/10/2001")
			oItems:AddBar(oItems:InsertItem(h,,"Item 2"),"Task","01/06/2001","01/08/2001")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2057
How can I change the visual appearance/color of the Filter For ... field

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:SetProperty("BackColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oG2antt:SetProperty("ForeColorHeader",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oG2antt:SetProperty("Background",26/*exBackColorFilter*/,oG2antt:BackColorHeader())
		oG2antt:SetProperty("Background",27/*exForeColorFilter*/,oG2antt:ForeColorHeader())
		oG2antt:SetProperty("Background",0/*exHeaderFilterBarButton*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oG2antt:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
		oG2antt:HeaderAppearance := 5/*Bump*/
		oColumn := oG2antt:Columns():Add("Items")
			oColumn:FilterOnType := .T.
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 2/*exNoItems*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("Root 1")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Root 2")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2056
How can I display the cell's caption without spaces on both sides

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oColumn:FormatColumn := "((trim(value) replace `   ` with ` `) replace `  ` with ` `) replace ` ` with `<bgcolor=FF0000> </bgcolor>`"
		oItems := oG2antt:Items()
			oItems:AddItem("")
			oItems:AddItem("Item A")
			oItems:AddItem("    Item B")
			oItems:AddItem("        Item   C    ")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2055
How can I highlight the spaces within the column (sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oColumn:FormatColumn := "`'` + ( value replace ` ` with `_` ) + `'`"
		oItems := oG2antt:Items()
			oItems:AddItem("")
			oItems:AddItem("Item A")
			oItems:AddItem("    Item B")
			oItems:AddItem("        Item   C    ")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2054
How can I highlight the spaces within the column (sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oColumn:FormatColumn := "len(value) = 0 ? `<bgcolor=FF0000> </bgcolor>` : ( value replace ` ` with `<bgcolor=FF0000> </bgcolor>` )"
		oItems := oG2antt:Items()
			oItems:AddItem("")
			oItems:AddItem("Item A")
			oItems:AddItem("    Item B")
			oItems:AddItem("        Item   C    ")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2053
How can I change the visual aspect of the drop down filter-calendar

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:SetProperty("Background",26/*exBackColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,1 } )  , .F. ))
		oG2antt:SetProperty("Background",27/*exForeColorFilter*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oG2antt:SetProperty("Background",12/*exDateScrollRange*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oG2antt:SetProperty("Background",8/*exDateHeader*/,oG2antt:Background(26/*exBackColorFilter*/))
		oG2antt:SetProperty("Background",11/*exDateScrollThumb*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oColumn := oG2antt:Columns():Add("Date")
			oColumn:FilterType := 4/*exDate*/
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterDate := .T.
			oColumn:DisplayFilterPattern := .F.
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2052
How can I scroll the chart to ensure that a bar fits the chart's client area

PROCEDURE OnButtonClick(oG2antt,Item,ColIndex,Key)
	LOCAL dEnd,dScroll,dStart,kBar
	kBar := oG2antt:Items:FirstItemBar(Item)
	dStart := oG2antt:Items:ItemBar(Item,kBar,1/*exBarStart*/)
	dEnd := oG2antt:Items:ItemBar(Item,kBar,2/*exBarEnd*/)
	dScroll := oG2antt:FormatABC("(A+B)/2",dStart,dEnd)
	oG2antt:Chart():ScrollTo(dScroll,1)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:ButtonClick := {|Item,ColIndex,Key| OnButtonClick(oG2antt,Item,ColIndex,Key)} /*Occurs when user clicks on the cell's button.*/

		oG2antt:BeginUpdate()
		oG2antt:ShowFocusRect := .F.
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:GridLineStyle := 3/*exGridLinesDot4*/
		oG2antt:SelBackMode := 1/*exTransparent*/
		oChart := oG2antt:Chart()
			oChart:OverviewVisible := 6402/*exOverviewShowDateTimeScaleBottom+exOverviewAllowVerticalScroll+exOverviewShowAllVisible*/
			oChart:OverviewHeight := 26
			oChart:FirstVisibleDate := "06/08/2011"
			oChart:AdjustLevelsToBase := .T.
			oChart:SetProperty("PaneWidth",.F.,64)
			oChart:UnitWidth := 14
			oChart:LevelCount := 2
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 3/*exGridLinesDot4*/
			oChart:SetProperty("SelBackColor",oG2antt:SelBackColor())
			oChart:ColumnsFormatLevel := "" + CHR(34) + "" + CHR(34) + ":2,(" + CHR(34) + "" + CHR(34) + "/14;1/" + CHR(34) + "" + CHR(34) + "):14"
		oColumns := oG2antt:Columns()
			oColumns:Add("Default")
			oColumn := oColumns:Add("")
				oColumn:SetProperty("Def",2/*exCellHasButton*/,.T.)
				oColumn:SetProperty("Def",4/*exCellBackColor*/,15790320)
				oColumn:Visible := .F.
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("T1"),"Task","06/09/2011","06/17/2011")
			oItems:AddBar(oItems:AddItem("T2"),"Task","01/10/2012","01/17/2012")
			oItems:AddBar(oItems:AddItem("T3"),"Task","02/19/2013","02/23/2013")
			oItems:AddBar(oItems:AddItem("T4"),"Task","12/19/2014","12/23/2014")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2051
Is it possible to hide completely the list portion

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oConditionalFormat
	LOCAL oInsideZooms,oInsideZooms1
	LOCAL oItems
	LOCAL oLevel,oLevel1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:HeaderHeight := 32
		oG2antt:OnResizeControl := 129/*exDisableSplitter+exResizeChart*/
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oConditionalFormat := oG2antt:ConditionalFormats():Add("%CS0 = 1")
			oConditionalFormat:ApplyToBars := "Task"
			oConditionalFormat:SetProperty("BarColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "06/08/2011"
			oChart:AdjustLevelsToBase := .T.
			oChart:SetProperty("PaneWidth",.F.,0)
			oChart:LevelCount := 2
			oChart:AllowInsideZoom := .T.
			oLevel := oChart:Level(0)
				oLevel:Alignment := 1/*CenterAlignment*/
				oLevel:Label := "<b><%d%>-<%mmm%>-<%yyyy%>"
				oLevel:Unit := 4096/*exDay*/
			oLevel1 := oChart:Level(1)
				oLevel1:Label := "<%h%>"
				oLevel1:Count := 8
				oLevel1:Unit := 65536/*exHour*/
				oLevel1:FormatLabel := "date(int(dvalue)) case (#06/08/2011# : (int(value) case ( 0 : 'Shift <b>1</b><br>23/20'; 8 : 'Shift <b>2</b><br>38/30' ; 16 : 'Shift <b>3</b><br>24/24' ) ) ; #06/09/2011# : (int(value) case ( 0 : 'Shift <b>1</b><br>15/20'; 8 : 'Shift <b>2</b><br>30/32' ; 16 : 'Shift <b>3</b><br>26/24' ) ) )"
			oChart:UnitWidth := 64
			oChart:NonworkingDays := 0
			oChart:ColumnsFormatLevel := "0"
			oChart:AllowInsideZoom := .T.
			oChart:DefaultInsideZoomFormat():InsideUnit := 1048576/*exMinute*/
			oChart:AllowResizeInsideZoom := .F.
			oChart:InsideZoomOnDblClick := .F.
			oInsideZooms := oChart:InsideZooms()
				oInsideZooms:SplitBaseLevel := .F.
				oInsideZooms:DefaultWidth := 0
			oInsideZooms1 := oChart:InsideZooms()
				oInsideZooms1:Add("06/09/2011 08:00:00")
				oInsideZooms1:Add("06/09/2011 16:00:00")
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:GridLineStyle := 3/*exGridLinesDot4*/
		oG2antt:Columns():Add("Defaul"):SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("T1"),"Task","06/08/2011 08:00:00","06/10/2011")
			oItems:AddBar(oItems:AddItem("T2"),"Task","06/08/2011 16:00:00","06/10/2011 08:00:00")
			oItems:AddBar(oItems:AddItem("T3"),"Task","06/09/2011","06/10/2011")
			oItems:SetProperty("CellState",oItems:ItemByIndex(1),0,1)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2050
How can I find out what exBarWorkingCount represents

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oColumn := oG2antt:Columns():Add("Tasks")
			oColumn:AllowSizing := .F.
			oColumn:Width := 42
		oColumn1 := oG2antt:Columns():Add("Format")
			oColumn1:SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
			oColumn1:FormatColumn := "trim((1:=int((0:=value)/365) ? =:1 + ` year(s) ` : ``)  + (1:=int((0:=(=:0 - (=:1*365)))/31) ? =:1 + ` month(s) ` : ``) + (1:=int((0:=(=:0 - (=:1*31)))/7) ? =:1 + ` week(s) ` : ``) + (1:=int((0:=(=:0 - (=:1*7)))/1) ? =:1 + ` day(s) ` : ``) + (1:=int((0:=(=:0 - =:1 + 1/24/60/60/2))*24) ? =:1 + ` hour(s) ` : ``) + (1:=int((0:=(=:0*24 - =:1))*60) ? =:1 + ` min(s) ` : ``) + (1:=int((0:=(=:0*60 - =:1))*60) ? =:1 + ` sec(s)` : ``))"
		oColumn2 := oG2antt:Columns():Add("Value")
			oColumn2:SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
			oColumn2:SortType := 1/*SortNumeric*/
			oColumn2:Editor():EditType := 1/*EditType*/
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:GridLineStyle := 48/*exGridLinesSolid*/
		oG2antt:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 204,232,255 } )  , .F. ))
		oG2antt:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oChart := oG2antt:Chart()
			oChart:SetProperty("SelBackColor",oG2antt:SelBackColor())
			oChart:FirstVisibleDate := "04/06/2009"
			oChart:SetProperty("PaneWidth",.F.,256)
			oChart:LevelCount := 2
			oChart:UnitScale := 65536/*exHour*/
			oChart:NonworkingHours := 15728767
			oChart:ShowNonworkingDates := .F.
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
			oBar := oChart:Bars:Item("Task")
				oBar:SetProperty("Def",20/*exBarKeepWorkingCount*/,.T.)
			oChart:AllowLinkBars := .F.
			oChart:DrawGridLines := -2/*exRowLines*/
			oChart:GridLineStyle := 48/*exGridLinesSolid*/
			oChart:Level(0):DrawGridLines := .T.
			oChart:ResizeUnitScale := 1048576/*exMinute*/
			oChart:ResizeUnitCount := 15
			oChart:SetProperty("Label",1048576/*exMinute*/,"<|><%nn%><|><%h%>:<%nn%> <%AM/PM%><|><%d3%>, <%m3%> <%d%>, '<%yy%> <%h%>:<%nn%> <%AM/PM%><|><%dddd%>, <%mmmm%> <%d%>, <%yyyy%> <%h%>:<%nn%> <%AM/PM%><||>15")
			oChart:AllowZoomOnFly := 280/*exZoomOnFlyIncludeNeighborItems+exZoomOnFly*/
			oChart:SetProperty("BackColorZoomOnFly",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,0 } )  , .F. ))
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oItems := oG2antt:Items()
			h := oItems:AddItem("")
			oItems:SetProperty("SelectableItem",h,.F.)
			oItems:SetProperty("SortableItem",h,.F.)
			oItems:AddBar(oItems:AddItem("T1"),"Task","04/06/2009 10:00:00","04/06/2009 13:00:00")
			oItems:AddBar(oItems:AddItem("T2"),"Task","04/06/2009 10:00:00","04/06/2009 16:00:00")
			oItems:AddBar(oItems:AddItem("T3"),"Task","04/06/2009 10:00:00","04/06/2009 19:00:00")
			h := oItems:AddItem("")
			oItems:SetProperty("SelectableItem",h,.F.)
			oItems:SetProperty("SortableItem",h,.F.)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2049
How can I hide the filter bar description

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oColumn := oG2antt:Columns():Add("Filter")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterType := 240/*exFilter*/
			oColumn:Filter := "B"
		oItems := oG2antt:Items()
			oItems:AddItem("A")
			oItems:AddItem("B")
			oItems:AddItem("C")
		oG2antt:ApplyFilter()
		oG2antt:FilterBarHeight := 0
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2048
How can I add a break bar

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oColumn := oG2antt:Columns():Add("Tasks")
			oColumn:AllowSizing := .F.
			oColumn:Width := 42
		oColumn1 := oG2antt:Columns():Add("Working")
			oColumn1:SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
			oColumn1:FormatColumn := "((1:=int(0:= (value))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')"
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:GridLineStyle := 48/*exGridLinesSolid*/
		oG2antt:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 204,232,255 } )  , .F. ))
		oG2antt:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oChart := oG2antt:Chart()
			oChart:SetProperty("SelBackColor",oG2antt:SelBackColor())
			oChart:FirstVisibleDate := "04/06/2009"
			oChart:SetProperty("PaneWidth",.F.,164)
			oChart:LevelCount := 2
			oChart:UnitScale := 65536/*exHour*/
			oChart:NonworkingHours := 15728767
			oChart:ShowNonworkingDates := .F.
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
			oBar := oChart:Bars():Add("Task:Split")
				oBar:SetProperty("Def",20/*exBarKeepWorkingCount*/,.T.)
				oBar:Shortcut := "Task"
			oChart:AllowLinkBars := .F.
			oChart:DrawGridLines := -2/*exRowLines*/
			oChart:GridLineStyle := 48/*exGridLinesSolid*/
			oChart:Level(0):DrawGridLines := .T.
			oChart:ResizeUnitScale := 1048576/*exMinute*/
			oChart:ResizeUnitCount := 15
			oChart:SetProperty("Label",1048576/*exMinute*/,"<|><%nn%><|><%h%>:<%nn%> <%AM/PM%><|><%d3%>, <%m3%> <%d%>, '<%yy%> <%h%>:<%nn%> <%AM/PM%><|><%dddd%>, <%mmmm%> <%d%>, <%yyyy%> <%h%>:<%nn%> <%AM/PM%><||>15")
			oChart:AllowZoomOnFly := 280/*exZoomOnFlyIncludeNeighborItems+exZoomOnFly*/
			oChart:SetProperty("BackColorZoomOnFly",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,0 } )  , .F. ))
			oChart:AllowNonworkingBars := .T.
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oItems := oG2antt:Items()
			oItems:AddItem("")
			h := oItems:AddItem("T1")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,"(weekday(value) in (0,6)) or (timeF(value) < `07:00:00`) or (timeF(value) >= `20:00:00`) ")
			oItems:AddBar(h,"","04/06/2009 07:30:00","04/06/2009 09:30:00","A","<c><font ;4>break<br>bar")
			oItems:SetProperty("ItemBar",h,"A",38/*exBarTreatAsNonworking*/,.T.)
			oItems:AddBar(h,"Task","04/06/2009 10:00:00","04/06/2009 12:00:00")
			oItems:AddBar(oItems:AddItem("T2"),"Task","04/06/2009 10:00:00","04/06/2009 17:45:00")
			oItems:AddItem("")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2047
It seems the ResizeUnitCount have no effect on the ZoomOnFly feature, is it normal

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oColumn := oG2antt:Columns():Add("Tasks")
			oColumn:AllowSizing := .F.
			oColumn:Width := 42
		oColumn1 := oG2antt:Columns():Add("Working")
			oColumn1:SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
			oColumn1:FormatColumn := "((1:=int(0:= (value))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')"
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:DrawGridLines := -2/*exRowLines*/
		oG2antt:GridLineStyle := 48/*exGridLinesSolid*/
		oG2antt:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 204,232,255 } )  , .F. ))
		oG2antt:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oChart := oG2antt:Chart()
			oChart:SetProperty("SelBackColor",oG2antt:SelBackColor())
			oChart:FirstVisibleDate := "04/06/2009"
			oChart:SetProperty("PaneWidth",.F.,164)
			oChart:LevelCount := 2
			oChart:UnitScale := 65536/*exHour*/
			oChart:NonworkingHours := 15728767
			oChart:ShowNonworkingDates := .F.
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingHours := .F.
			oBar := oChart:Bars:Item("Task")
				oBar:SetProperty("Def",20/*exBarKeepWorkingCount*/,.T.)
			oChart:AllowLinkBars := .F.
			oChart:DrawGridLines := -2/*exRowLines*/
			oChart:GridLineStyle := 48/*exGridLinesSolid*/
			oChart:Level(0):DrawGridLines := .T.
			oChart:ResizeUnitScale := 1048576/*exMinute*/
			oChart:ResizeUnitCount := 15
			oChart:SetProperty("Label",1048576/*exMinute*/,"<|><%nn%><|><%h%>:<%nn%> <%AM/PM%><|><%d3%>, <%m3%> <%d%>, '<%yy%> <%h%>:<%nn%> <%AM/PM%><|><%dddd%>, <%mmmm%> <%d%>, <%yyyy%> <%h%>:<%nn%> <%AM/PM%><||>15")
			oChart:AllowZoomOnFly := 280/*exZoomOnFlyIncludeNeighborItems+exZoomOnFly*/
			oChart:SetProperty("BackColorZoomOnFly",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,0 } )  , .F. ))
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oItems := oG2antt:Items()
			oItems:AddItem("")
			oItems:AddBar(oItems:AddItem("T1"),"Task","04/06/2009 10:00:00","04/06/2009 12:00:00")
			oItems:AddBar(oItems:AddItem("T2"),"Task","04/06/2009 10:00:00","04/06/2009 17:45:00")
			oItems:AddItem("")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2046
Export Data in HTML format

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:SetProperty("ItemBold",Item,.T.)
		oItems:AddBar(Item,"Summary",oItems:CellValue(Item,2),oItems:CellValue(Item,4))
		oItems:DefineSummaryBars(Item,"",-3,"")
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	LOCAL i
	oItems := oG2antt:Items()
		i := oItems:ItemToIndex(Item)
		oItems:AddBar(Item,"Task","01/02/2008","01/09/2008","")
		oItems:SetProperty("ItemBar",Item,"",514/*exBarMove*/,i)
		oItems:SetProperty("ItemBar",Item,"",513/*exBarDuration*/,i)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oBar,oBar1
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oConditionalFormat,oConditionalFormat1
	LOCAL oItems
	LOCAL oShellBrowserWindow
	LOCAL sFile

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oG2antt:FilterBarPromptVisible := 2579/*exFilterBarCompact+exFilterBarShowCloseIfRequired+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 2/*exFilterPromptContainsAny*/
		oG2antt:SingleSort := .F.
		oG2antt:AllowGroupBy := .T.
		oG2antt:SetProperty("BackColorSortBar",oG2antt:BackColor())
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzVIUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxINgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZxBBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +;
		"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==")
			oAppearance:RenderType := -268435456
		oChart := oG2antt:Chart()
			oChart:DrawGridLines := -1/*exAllLines*/
			oChart:SetProperty("PaneWidth",.F.,196)
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2008"
			oChart:FirstWeekDay := 1/*exMonday*/
			oBar := oChart:Bars:Item("Summary")
				oBar:StartShape := 0/*exShapeIconEmpty*/
				oBar:EndShape := 0/*exShapeIconEmpty*/
				oBar:Shape := 1/*exShapeSolid*/
				oBar:SetProperty("Color",0x1808080)
				oBar:Height := 7
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=%513%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
			oBar1 := oChart:Bars:Item("Task")
				oBar1:SetProperty("Def",3/*exBarCaption*/,"<%=(%2-%1) in (3,5) ? %513 : `` %>")
				oBar1:SetProperty("Def",4/*exBarHAlignCaption*/,18)
		oConditionalFormat := oG2antt:ConditionalFormats():Add("(%2 - %1) = 3","K3")
			oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oConditionalFormat:SetProperty("BarColor",oConditionalFormat:ForeColor())
			oConditionalFormat:ApplyToBars := "Task"
		oConditionalFormat1 := oG2antt:ConditionalFormats():Add("(%2 - %1) = 5","K5")
			oConditionalFormat1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
			oConditionalFormat1:SetProperty("BarColor",oConditionalFormat1:ForeColor())
			oConditionalFormat1:ApplyToBars := "Task"
		oColumns := oG2antt:Columns()
			oColumns:Add("Tasks"):SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn := oColumns:Add("Start")
				oColumn:SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
				oColumn:SetProperty("Def",19/*exCellValueToItemBarKey*/,"")
			oColumn1 := oColumns:Add("End")
				oColumn1:SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
				oColumn1:SetProperty("Def",19/*exCellValueToItemBarKey*/,"")
		oItems := oG2antt:Items()
			oItems:AllowCellValueToItemBar := .T.
			oItems:AddItem("Task A")
			oItems:AddItem("Task A")
			oItems:AddItem("Task A")
			oItems:AddItem("Task A")
			oItems:AddItem("Task B")
			oItems:AddItem("Task B")
			oItems:AddItem("Task B")
			oItems:AddItem("Task C")
		oG2antt:Columns:Item("Tasks"):SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()
		sFile := "c:/temp/export.html"
		oG2antt:Export(sFile,"vis")
		oShellBrowserWindow := CreateObject("InternetExplorer.Application")
			oShellBrowserWindow:Navigate2(sFile)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2045
Export Data in CSV format

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	LOCAL i
	oItems := oG2antt:Items()
		i := oItems:ItemToIndex(Item)
		oItems:AddBar(Item,"Task","01/02/2008","01/09/2008","")
		oItems:SetProperty("ItemBar",Item,"",514/*exBarMove*/,i)
		oItems:SetProperty("ItemBar",Item,"",513/*exBarDuration*/,i)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oConditionalFormat,oConditionalFormat1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oG2antt:DrawGridLines := -1/*exAllLines*/
		oG2antt:HeaderAppearance := 4/*Etched*/
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oG2antt:FilterBarPromptVisible := 2579/*exFilterBarCompact+exFilterBarShowCloseIfRequired+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:FilterBarPromptType := 2/*exFilterPromptContainsAny*/
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,196)
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2008"
			oBar := oChart:Bars:Item("Task")
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=(%2-%1) in (3,5) ? %513 : `` %>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
		oConditionalFormat := oG2antt:ConditionalFormats():Add("(%2 - %1) = 3","K3")
			oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oConditionalFormat:SetProperty("BarColor",oConditionalFormat:ForeColor())
			oConditionalFormat:ApplyToBars := "Task"
		oConditionalFormat1 := oG2antt:ConditionalFormats():Add("(%2 - %1) = 5","K5")
			oConditionalFormat1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
			oConditionalFormat1:SetProperty("BarColor",oConditionalFormat1:ForeColor())
			oConditionalFormat1:ApplyToBars := "Task"
		oColumns := oG2antt:Columns()
			oColumns:Add("Tasks"):SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn := oColumns:Add("Start")
				oColumn:SetProperty("Def",18/*exCellValueToItemBarProperty*/,1)
				oColumn:SetProperty("Def",19/*exCellValueToItemBarKey*/,"")
			oColumn1 := oColumns:Add("End")
				oColumn1:SetProperty("Def",18/*exCellValueToItemBarProperty*/,2)
				oColumn1:SetProperty("Def",19/*exCellValueToItemBarKey*/,"")
		oItems := oG2antt:Items()
			oItems:AllowCellValueToItemBar := .T.
			oItems:AddItem("Task A")
			oItems:AddItem("Task A")
			oItems:AddItem("Task A")
			oItems:AddItem("Task A")
			oItems:AddItem("Task B")
			oItems:AddItem("Task B")
			oItems:AddItem("Task B")
			oItems:AddItem("Task C")
		oG2antt:EndUpdate()
		DevOut( Transform(oG2antt:Export("","vis"),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2044
I want to be able to detect when a user clicks on a row in the chart that is not populated

PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	LOCAL date,item,sMessage
	item := oG2antt:ItemFromPoint(-1,-1,col,hit)
	date := oG2antt:Chart:DateFromPoint(-1,-1)
	sMessage := oG2antt:FormatABC("(not(A = 0) ? `chart` : `list`) + ` ` + (not(B = 0) ? `item` : `empty`)  ",date,item)
	DevOut( Transform(sMessage,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:SetProperty("PaneWidth",.F.,128)
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "01/01/2018"
		oG2antt:Columns():Add("Tasks")
		oItems := oG2antt:Items()
			oItems:AddBar(oItems:AddItem("Task 1"),"Task","01/02/2018","01/12/2018")
			oItems:AddBar(oItems:AddItem("Task 2"),"Task","01/03/2018","01/13/2018")
			oItems:AddBar(oItems:AddItem("Task 3"),"Task","01/04/2018","01/14/2018")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2043
Is it possible to have multiple calendars. A calendar for each row for example. Reason : some of our lines work 2 shifts but some also have a night shift

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBars
	LOCAL oChart
	LOCAL oColumn
	LOCAL oItems
	LOCAL h,sCalendar1,sCalendar2,sCalendar3,sCalendar4

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Columns():Add("Tasks")
		oColumn := oG2antt:Columns():Add("Working")
			oColumn:SetProperty("Def",18/*exCellValueToItemBarProperty*/,258)
			oColumn:FormatColumn := "((1:=int(0:=( 24*int(value) + (value - int(value) + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')"
		oChart := oG2antt:Chart()
			oChart:FirstVisibleDate := "04/06/2009"
			oChart:SetProperty("PaneWidth",.F.,148)
			oChart:LevelCount := 2
			oChart:ShowNonworkingUnits := .F.
			oChart:ShowNonworkingDates := .F.
			oBars := oChart:Bars()
				oBars:Add("Task:Split"):Shortcut := "Task"
				oBars:Item("Task"):SetProperty("Def",20/*exBarKeepWorkingCount*/,.T.)
			oChart:SetProperty("Label",65536/*exHour*/,"<%h%><||><||>65536")
			oChart:Level(0):FormatLabel := "`<font small fonts;6>` + value"
			oChart:Level(1):FormatLabel := "len(value) = 2 ? (`<font small fonts;4>` + (value left 1) + `<br>` + (value right 1) ) : (`<font small fonts;4>` + ` <br>` + (value left 1) + `` )"
			oChart:UnitScale := 65536/*exHour*/
			oChart:UnitWidth := 9
		oG2antt:Items():AllowCellValueToItemBar := .T.
		oItems := oG2antt:Items()
			sCalendar1 := "weekday(value) in (0,6) or (hour(value) < 6) or (hour(value) > 18)"
			h := oItems:AddItem("Shift 1")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar1,""))
			oItems:AddBar(h,"Task","04/06/2009","04/07/2009")
			h := oItems:AddItem("Shift 1")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar1,""))
			oItems:AddBar(h,"Task","04/06/2009","04/08/2009")
			sCalendar2 := "weekday(value) in (0,6) or (hour(value) < 8) or (hour(value) > 14)"
			h := oItems:AddItem("Shift 2")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar2,""))
			oItems:AddBar(h,"Task","04/06/2009","04/07/2009")
			h := oItems:AddItem("Shift 2")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar2,""))
			oItems:AddBar(h,"Task","04/06/2009","04/08/2009")
			sCalendar3 := "weekday(value) in (0,6) or 0 = ( hour(value) mod 3 ) "
			h := oItems:AddItem("Shift 3")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar3,""))
			oItems:AddBar(h,"Task","04/06/2009","04/07/2009")
			h := oItems:AddItem("Shift 3")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar3,""))
			oItems:AddBar(h,"Task","04/06/2009","04/08/2009")
			sCalendar4 := "weekday(value) in (0,6)"
			h := oItems:AddItem("Shift 3")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar4,""))
			oItems:AddBar(h,"Task","04/06/2009","04/07/2009")
			h := oItems:AddItem("Shift 3")
			oItems:SetProperty("ItemNonworkingUnits",h,.F.,Transform(sCalendar4,""))
			oItems:AddBar(h,"Task","04/06/2009","04/08/2009")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2042
Is it possible to check multiple-items at once

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	LOCAL bHasParent
	bHasParent := oG2antt:FormatABC("value != 0",oG2antt:Items:ItemParent(Item))
	oItems := oG2antt:Items()
		oItems:SetProperty("CellHasCheckBox",Item,0,.F.)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn
	LOCAL oItems
	LOCAL h,hChild

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oColumn := oG2antt:Columns():Add("Tasks")
			oColumn:SetProperty("Def",17/*exCellValueFormat*/,1)
			oColumn:FormatColumn := "value + (%CS0 = 1 ? `<r><fgcolor=808080>(checked)` : ``)"
		oG2antt:HeaderVisible := 1/*exHeaderVisibleExtendLevels*/
		oG2antt:SingleSel := .F.
		oItems := oG2antt:Items()
			h := oItems:AddItem("Project")
			hChild := oItems:InsertItem(h,,"Task 1")
			hChild := oItems:InsertItem(h,,"Task 2")
			hChild := oItems:InsertItem(h,,"Task 3")
			oItems:SetProperty("ExpandItem",h,.T.)
			oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
			oItems:SetProperty("CellValue",oItems:LockedItem(0/*exTop*/,0),0,"<c>Select multiple items and press the <b>SPACE</b> key")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2041
How can I prevent changing the start/end colors of the bar, when ItemBar(exBarColor) property is applied

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar,oBar1
	LOCAL oBars
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oG2antt:VisualAppearance():Add(1,"E:\Exontrol\ExButton\sample\EBN\Assorted\bhframe.ebn")
		oG2antt:Chart():SetProperty("PaneWidth",.F.,96)
		oBars := oG2antt:Chart():Bars()
			oBars:AddShapeCorner(12345,1)
			oBars:AddShapeCorner(999,2)
			oBars:AddShapeCorner(1049,3)
			oBar := oBars:Add("T1")
				oBar:StartShape := 12345/*0x3020+exShapeIconVBar+exShapeIconRight*/
				oBar:EndShape := 999/*0x3e0+exShapeIconLeft*/
				oBar:Pattern := 4/*exPatternNDot*/
				oBar:SetProperty("StartColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
				oBar:SetProperty("Color",0x1000000)
				oBar:SetProperty("EndColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=`<font ;6>  ` + %0 + ``%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
			oBar1 := oBars:Add("T2")
				oBar1:StartShape := 12345/*0x3020+exShapeIconVBar+exShapeIconRight*/
				oBar1:EndShape := 1049/*0x400+exShapeIconVBar+exShapeIconRight*/
				oBar1:Pattern := 4/*exPatternNDot*/
				oBar1:SetProperty("StartColor",-1)
				oBar1:SetProperty("Color",0x1000000)
				oBar1:SetProperty("EndColor",-1)
				oBar1:SetProperty("Def",3/*exBarCaption*/,"<%=`<font ;6>  ` + %0 + ``%>")
				oBar1:SetProperty("Def",4/*exBarHAlignCaption*/,18)
		oG2antt:Chart():FirstVisibleDate := "01/01/2001"
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item 1")
			oItems:AddBar(h,"T1","01/02/2001","01/04/2001")
			h := oItems:AddItem("Item 2")
			oItems:AddBar(h,"T1","01/02/2001","01/04/2001")
			oItems:SetProperty("ItemBar",h,"",33/*exBarColor*/,65280)
			h := oItems:AddItem("Item 3")
			oItems:AddBar(h,"T1","01/02/2001","01/04/2001")
			oItems:SetProperty("ItemBar",h,"",33/*exBarColor*/,255)
			h := oItems:AddItem("Item 4")
			oItems:AddBar(h,"T2","01/02/2001","01/04/2001")
			h := oItems:AddItem("Item 5")
			oItems:AddBar(h,"T2","01/02/2001","01/04/2001")
			oItems:SetProperty("ItemBar",h,"",33/*exBarColor*/,65280)
			h := oItems:AddItem("Item 6")
			oItems:AddBar(h,"T2","01/02/2001","01/04/2001")
			oItems:SetProperty("ItemBar",h,"",33/*exBarColor*/,255)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2040
How can I get the icon from the cell when using the Items.CellImages property (icon index)

PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	LOCAL i
	i := oG2antt:ItemFromPoint(-1,-1,c,hit)
	DevOut( Transform(oG2antt:FormatABC("( 0x44 = ( value bitand 0x44 ) ) ? ( ( (value bitand 0xFFFF0000) bitshift 16 ) array B split `,` )  : `no image`",hit,oG2antt:Items:CellImages(i,c)),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:Columns():Add("Default")
		oItems := oG2antt:Items()
			oItems:SetProperty("CellImages",oItems:AddItem("Item 1"),0,"3,2,1")
			oItems:SetProperty("CellImages",oItems:AddItem("Item 2"),0,"2,3")
			oItems:SetProperty("CellImages",oItems:AddItem("Item 3"),0,"2,")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2039
How can I get the icon from the cell when using the Items.CellImages property (icon position within the cell)

PROCEDURE OnMouseMove(oG2antt,Button,Shift,X,Y)
	LOCAL i
	i := oG2antt:ItemFromPoint(-1,-1,c,hit)
	DevOut( Transform(oG2antt:FormatABC("( 0x44 = ( value bitand 0x44 ) ) ? 1 + ( (value bitand 0xFFFF0000) bitshift 16 ) : `no image`",hit),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oG2antt,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/

		oG2antt:BeginUpdate()
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oG2antt:Chart():SetProperty("PaneWidth",.T.,0)
		oG2antt:Columns():Add("Default")
		oItems := oG2antt:Items()
			oItems:SetProperty("CellImages",oItems:AddItem("Item 1"),0,"3,2,1")
			oItems:SetProperty("CellImages",oItems:AddItem("Item 2"),0,"2,3")
			oItems:SetProperty("CellImages",oItems:AddItem("Item 3"),0,"2")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2038
I have an EBN bar. Now if I apply an additional color to the bar, e,g, yellow, the bar is displayed as "dark yellow", which I assume is due to the black EBN color. How can I get the more "bright yellow" color

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	LOCAL l
	oItems := oG2antt:Items()
		oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
		oItems:AddBar(Item,"Summary","12/02/2017","12/02/2017")
		oItems:DefineSummaryBars(Item,"",-3,"")
		l := oItems:GroupItem(Item)
		oItems:SetProperty("CellSingleLine",Item,l,0/*exCaptionWordWrap*/)
		oItems:SetProperty("CellBold",Item,l,.T.)
		oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
	oG2antt:Chart():SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oBar
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzVIUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxINgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZxBBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +;
		"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==")
			oAppearance:RenderType := -268435456
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,342)
			oBar := oChart:Bars:Item("Summary")
				oBar:StartShape := 0/*exShapeIconEmpty*/
				oBar:EndShape := 0/*exShapeIconEmpty*/
				oBar:Shape := 1/*exShapeSolid*/
				oBar:SetProperty("Color",0x1ff0000)
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=%513%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumn := oColumns:Add("Pos")
				oColumn:FormatColumn := "1 pos ``"
				oColumn:AllowGroupBy := .F.
				oColumn:Position := 0
				oColumn:Width := 48
				oColumn:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:AllowGroupBy := .T.
		oG2antt:HasLines := 0/*exNoLine*/
		oG2antt:LinesAtRoot := 0/*exNoLinesAtRoot*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2037
Is it possible to change the visual appearance of the position signs when user changes the column's position by drag and drop

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oColumns

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:HeaderAppearance := 4/*Etched*/
		oColumns := oG2antt:Columns()
			oColumns:Add("Column 1")
			oColumns:Add("Column 2")
			oColumns:Add("Column 3")
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADKMA4SOKIZhrE4bBhGaQRUgyI43RhHUBzVIUcQvE6TZRHCQYHgkNIhDJIM7TPLkeSVJaTIRoKhJUogApQThTMgVRDEThkGoSa6soSoYTDBKybLrSLKagOT5YUDKUqSdKEZRpEq1YztWbaQoCUoqVRRVIWfbNd4JJa4aDhWpYdpeeY5R7bWLgBYVVABL7LLRsSxpHxPF6RXxaeI3GKsaS8G6ic6nPQMHj7I4NS5pUa6Rh2VYNSa8AAtETRYznOw4bTMXAjNIea5bAYIIR5HIoDzVbQcCQAHL9DBeEMIQEEISgGhMGZQmocgymoYRRCIEQ0G2HYBnEIBig4V4zCQGINnmagCECY43medZ6H2Pw/g+X5fnueh/h+R5+AKABfkMWgGgGYA4AICoCGCE5WA4CphACMgSD2IRIDI" +;
		"BICmEd5YGCBpRjGBgegWIYIgWdgoGIRQsiKCZiAiJZ0gGQI4jUS4LECOAiBmDJflGfg2BSY4Al4OhGkOCJ2DgFJjGGfgqgiH5Ch4RhGkqOQmEOEpkFkHQYhJRYyESAokGKHhIhKIxJEmf4VGUeRGFmF5iBkchPhYJQ5GoYIZg6Ug6GoFYmkmNhuhulRGHKGoImefh0BUZ4JmYeoemeSZ2H6HQmgoBgXDqXwUAQgI=")
			oAppearance:Add(2,"CP:1 0 -36 0 0")
		oG2antt:SetProperty("Background",182/*exColumnsPositionSign*/,0x2000000)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2036
Overlaid-Types

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL oItems
	LOCAL barName
	oItems := oG2antt:Items()
		barName := oItems:ItemData(Item)
		oItems:AddBar(Item,barName,"01/02/2001","01/04/2001","A1")
		oItems:AddBar(Item,barName,"01/03/2001","01/05/2001","A2")
		oItems:AddBar(Item,barName,"01/04/2001","01/07/2001","A3")
		oItems:AddBar(Item,barName,"01/05/2001","01/08/2001","A4")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar,oBar1,oBar2,oBar3,oBar4,oBar5
	LOCAL oChart
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:DefaultItemHeight := 22
		oG2antt:Columns():Add("Task")
		oG2antt:ScrollBySingleLine := .T.
		oG2antt:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oG2antt:DrawGridLines := 1/*exHLines*/
		oChart := oG2antt:Chart()
			oChart:DrawGridLines := 1/*exHLines*/
			oChart:ShowNonworkingDates := .F.
			oChart:SetProperty("PaneWidth",.F.,164)
			oChart:FirstVisibleDate := "12/28/2000"
			oChart:LevelCount := 2
			oChart:Bars():CallMethod("Copy","Task","Intersect"):SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oChart:Bars:Item("Task"):OverlaidType := 0/*exOverlaidBarsNone*/
			oBar := oChart:Bars():CallMethod("Copy","Task","Task-Transparent")
				oBar:OverlaidType := 0/*exOverlaidBarsNone*/
				oBar:SetProperty("Def",19/*exBarTransparent*/,50)
				oBar:Pattern := 32/*exPatternBox*/
				oBar:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
				oBar:SetProperty("StartColor",AutomationTranslateColor( GraMakeRGBColor  ( { 80,80,255 } )  , .F. ))
				oBar:SetProperty("EndColor",oBar:StartColor())
			oChart:Bars():CallMethod("Copy","Task","Task-Offset"):OverlaidType := 1/*exOverlaidBarsOffset*/
			oBar1 := oChart:Bars():CallMethod("Copy","Task","Task-OffsetTransparent")
				oBar1:OverlaidType := 257/*exOverlaidBarsTransparent+exOverlaidBarsOffset*/
				oBar1:SetProperty("Overlaid",256/*exOverlaidBarsTransparent*/,75)
			oBar2 := oChart:Bars():CallMethod("Copy","Task","Task-Intersect")
				oBar2:OverlaidType := 2/*exOverlaidBarsIntersect*/
				oBar2:SetProperty("Overlaid",2/*exOverlaidBarsIntersect*/,"Intersect")
			oChart:Bars():CallMethod("Copy","Task","Task-Stack"):OverlaidType := 3/*exOverlaidBarsStack*/
			oBar3 := oChart:Bars():CallMethod("Copy","Task","Task-StackAutoArrange")
				oBar3:OverlaidType := 515/*exOverlaidBarsStackAutoArrange+exOverlaidBarsStack*/
				oBar3:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oBar3:OverlaidGroup := "Task"
			oBar4 := oChart:Bars():CallMethod("Copy","Task","Task-Cascade")
				oBar4:OverlaidType := 4/*exOverlaidBarsCascade*/
				oBar4:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oBar4:OverlaidGroup := "Task"
			oBar5 := oChart:Bars():CallMethod("Copy","Task","Task-Strict")
				oBar5:OverlaidType := 8195/*exOverlaidBarsStrict+exOverlaidBarsStack*/
				oBar5:OverlaidGroup := "Task"
				oBar5:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oItems := oG2antt:Items()
			oItems:InsertItem(0,"Task","Overlaid-None")
			oItems:InsertItem(0,"Task-Transparent","Overlaid-Semi-Transparent")
			oItems:InsertItem(0,"Task-Offset","Overlaid-Offset")
			oItems:InsertItem(0,"Task-OffsetTransparent","Overlaid-OffsetTransparent")
			oItems:InsertItem(0,"Task-Intersect","Overlaid-Intersect")
			oItems:InsertItem(0,"Task-Stack","Overlaid-Stack")
			h := oItems:InsertItem(0,"Task-StackAutoArrange","Overlaid-StackAutoArrange")
			oItems:AddBar(h,"Task","01/07/2001","01/09/2001","T1")
			oItems:AddBar(h,"Task","01/03/2001","01/05/2001","T2")
			oItems:AddBar(h,"Task","01/04/2001","01/07/2001","T3")
			oItems:AddBar(h,"Task","01/05/2001","01/08/2001","T4")
			h := oItems:InsertItem(0,"Task-Cascade","Overlaid-Cascade")
			oItems:AddBar(h,"Task","01/07/2001","01/09/2001","T1")
			oItems:AddBar(h,"Task","01/03/2001","01/05/2001","T2")
			oItems:AddBar(h,"Task","01/04/2001","01/07/2001","T3")
			oItems:AddBar(h,"Task","01/05/2001","01/08/2001","T4")
			oItems:SetProperty("ItemBar",h,"<A*>",52/*exBarOverlaidKey*/,"A")
			oItems:SetProperty("ItemBar",h,"<T*>",52/*exBarOverlaidKey*/,"T")
			h := oItems:InsertItem(0,"Task","Overlaid-StackStrict")
			oItems:AddBar(h,"Task-Strict","01/07/2001","01/09/2001","T1")
			oItems:SetProperty("ItemBar",0,"<*>",3/*exBarCaption*/,"<%=%9%>")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2035
FilterBarCaption ALLUI Keyword ( sample 3, result, leaf )

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems,oItems1
	LOCAL l,val
	oItems := oG2antt:Items()
		oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		val := oItems:CellValue(Item,oItems:GroupItem(Item))
		oItems:SetProperty("CellState",Item,oItems:GroupItem(Item),oG2antt:FormatABC("A = `Checked` ? 1 : 0",val))
	oItems1 := oG2antt:Items()
		oItems1:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
		oItems1:AddBar(Item,"Summary","12/02/2017","12/02/2017")
		oItems1:DefineSummaryBars(Item,"",-3,"")
		l := oItems1:GroupItem(Item)
		oItems1:SetProperty("CellSingleLine",Item,l,0/*exCaptionWordWrap*/)
		oItems1:SetProperty("CellBold",Item,l,.T.)
	oG2antt:Chart():SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL i
	i := oG2antt:FormatABC("value + 1",oG2antt:Items:ItemToIndex(Item))
	oG2antt:Items():SetProperty("CellImage",Item,3,i)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzVIUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxINgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZxBBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +;
		"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==")
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
			oBar := oChart:Bars:Item("Summary")
				oBar:StartShape := 0/*exShapeIconEmpty*/
				oBar:EndShape := 0/*exShapeIconEmpty*/
				oBar:Shape := 1/*exShapeSolid*/
				oBar:SetProperty("Color",0x1000000)
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=%513%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Check")
			oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterType := 6/*exCheck*/
		oColumn3 := oG2antt:Columns():Add("Image")
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterType := 10/*exImage*/
			oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oColumn4 := oG2antt:Columns():Add("Pos")
			oColumn4:AllowSizing := .F.
			oColumn4:AllowSort := .F.
			oColumn4:Width := 32
			oColumn4:FormatColumn := "1 rpos ``"
			oColumn4:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"Sub-Item B")
			oItems:SetProperty("CellState",h,2,1)
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(( ( allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + leafitemcount + ` result(s)` ) : (`<r><fgcolor=808080>`+ leafitemcount + ` item(s)`) )))"
		oG2antt:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:AllowGroupBy := .T.
		oG2antt:SortBarVisible := .T.
		oColumn5 := oG2antt:Columns:Item(2)
			oColumn5:FormatColumn := "%CS2 ? `Checked` : `Unchecked`"
			oColumn5:SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2034
A black portion is shown while I am using the BackColorAlternate with EBN colors. What can I do

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn,oColumn1
	LOCAL oConditionalFormat
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:ColumnAutoResize := .T.
		oG2antt:DefaultItemHeight := 20
		oG2antt:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhIDhAxHAxg0HG0Mg4xGI3HMOig3GcJiYAf8jAEhhUnAAyhEqg8hk0oAsIjgAiAwmYxGA4mYzGwwkI0i0ooUnB0IBMIl1Dg8zmYyGolptPkI1mY1GAll9KoUslNIrVCqNQldShFUstXAVfrVcrlZtVhuFnsUHq1zoczoQGhFBkNpg6zbDykUkhsPHE2h85nc9n8xtVDtlex9Msd2p1YstVq9ux8HyMtzuFz1PsNTzQlv2hhWfkuqpeVuN0q+nvEooN5veSAGpkb/ACcZrvhU3w83nM/poxGuchGpoVBvWgg+8knA4WimnFxI45Er5XOlHMg/Q3XU33W4ew9Wyu11mchDagcO7zus8VDoNBBEIKBpMY6DqOQyokhA/IQIQmwMk4bIQFDcoO6LWgwhQkNcABwEyAB5GwWbet6cRQg3DENQ5D8QxADZvEkAB8nabsURGeBpFM3pwE2AEZRpDx/neZpOR3Dz9oO/r/wCMoZNTBQAQR" +;
		"JSEwYg8HPGhEIoNCaEwq10gQ2WcRt7LcRxRFpuxUAEURQ3sczBEMgTTG8gN7HpOSEAEiQBAQZpmQ0DibPUFwbKcHwkhQoQtNQNzNEMbABOKDy/DMYQzHLeoPL0OTJSUd0pHcxTewk5zrIygIRPslz4lEngBKIAQivgASs/kLSBTlO00f8t0vGcgUbDlDRjXLCUNRERRvRgAHW2oAICA==")
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:PartialCheck := .T.
		oColumn1 := oG2antt:Columns():Add("Position")
			oColumn1:FormatColumn := "1 rindex ``"
			oColumn1:Visible := .F.
		oConditionalFormat := oG2antt:ConditionalFormats():Add("%C1 mod 2")
			oConditionalFormat:SetProperty("BackColor",0x1000000)
		oItems := oG2antt:Items()
			oItems:AddItem("Item 1")
			oItems:AddItem("Item 2")
			oItems:AddItem("Item 3")
			oItems:AddItem("Item 4")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2033
How can I specify alternate background colors for each root item, similar with BackColorAlternate

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oColumn,oColumn1
	LOCAL oConditionalFormat
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
			oColumn:PartialCheck := .T.
		oColumn1 := oG2antt:Columns():Add("Position")
			oColumn1:FormatColumn := "( ( 1:=( ( 0:=(1 rpos '') ) lfind `.`) ) < 0 ? =:0 : (=:0 left =:1) )"
			oColumn1:Visible := .F.
		oConditionalFormat := oG2antt:ConditionalFormats():Add("%C1 mod 2")
			oConditionalFormat:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oItems := oG2antt:Items()
			h := oItems:AddItem("Root 1")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Root 2")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			h := oItems:AddItem("Root 3")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2032
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 4)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:VisualDesign := "gBFLBWIgBAEHhEJAEGg6VAkHeLpgwChAOhULB8XAUUg8MAAREEHGMcgRCJ0ei8dhABDEcQAAYAQGKIYBkAKBQAGaAoDDMOQwQwAAxjGKEEwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQiiCYsS5GQBRWAkEwiBiEQTjea5CgOIAFS7LIqjRQEBxhIaZYIGaiQADENo9TxIMZAfBIHShK6NJABCCSQKkYx0HScRijDIEFwGIQmbKiej4DCiCQQW7OYYRVCNMQSfa8HivJyrcamfp/YBgOBYHb1eLVPR5LwfPCGUw1P6PLxkORZHimK4tSLHV7xVpMIwZFafIQhCCoHomS5NU7UNR0TQUFx9FaGX7rDDsGwLAJ6XRgF4bg2VpnHePpenAN4bH2GwHFmApSjEGBLnWOpRGOTBZHOegrE6BxPiWVJqCweQrn0LgJAWJBjwgaw1gKO5HmWch5h+fovF+G5bmich4BgfZkB8dynRUVYqiUR5rnmex/F6" +;
		"N4tn2AJfnebZ3DEXw3HWXgzAyIwgicKJKBKEIhCeCgiHyHYFEmSAFmqBghFIdgSCeIJygYDAyAgJx6AoIINAMOJNCgCZCGoGoLmMCI+CwJoihMNglCCIhzFCUg0EmMhghWDBkAiQg9CUY4jEYN4Jk2IxklYJoJHIUg+CSZJSESFwkkkGI+FOFIJEIRhPhMCRJCSVoRrSBhiDgTZjHYT4PEkYhwhgJYm0SaIaiaSYuE+GQNlmCIBGCJxjhiZQ5AkMhAg6ExJCkPhPguaAiFYUAlAkKZ0g6HoOEmWR/GHcA4m0OwIlIJIHCRgQshGJhpjoaocieaZiC6GAimkUgehIOwnGYGYIGkah6jaE4rg6SpCjKK5rEOMYlGIGIihKOggloFoqj6L5aGaBo6CkGIkAQjiPpCAAaJILCTJQlKPACDaXJgmSaJsnCdJ4nygKEoijKQpSmKcqCpKoqysK0rivLAsSyLMtC1LYty4Lkui7LwvS+L8wDBMIwzEMUxjHMgyT" +;
		"KMszDNM4zzQNE0jTNQ1TWNc2DZNo2zcN03jfOA4TiOM5DlOY5zoOk6jrOw7TuO88DxPI8z0PU9j3Pg+T6Ps/D9P4/0AQFAkDQRBUGQdCEJQpC0MQ1DkPRBEUSRNFEVBhFkXRhGQ9D6Dxfh+W5gGGd4QH2XQjCmDpFFaKoVB+D5Xmed5+H8YAHnIAh9EwV5Fl0d4MkMKJICmSgygSJAoEmMUCIPgnDCCIOQFYCxJjwFoCcA4kxoF+AIJkAgExegDEgEYQInAzCUAIOEGgfxiiRDYF1Q4EQ2BSCaEQYwbAiKREMpRSymFNDIAkAxT6oVRgSA2qdVKq1WqvVirMZQUhSCnBUMoIgoQRgnGSIQUgkg1hIHYAkAYMROAmHiLsE4xxSCxBwEwCQ0wmDdBsE0GYXBtg2CSPMFIuwYiQBYBQeAcwOCnBCCZgw0g0glBONAQgqQThCGgPQGoBQfiRGmOEZIPAXjsBoPAO4HRThhA0EQSA5BAgaCKJIGg3QdhOCmNU" +;
		"BoQAijTCIF0FwQxpCHDIPAYYMQGgtCmFcaQtRAjZCyFYSojQ2B2BoKwIYFApBXEIBsIQ1QsAWAWEwaA1xCgjAoIAQBAQ="
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Root 1")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Root 2")
			oItems:InsertItem(h,,"Child")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2031
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 3)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(3,"gBFLBCJwBAEHhEJAAEhABDwCg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSBcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfDxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJegef4zluaJ3nqPJeCYH4BAeX5TDLBpVGqKRRnwf4flefZtHsX54BYAR/F+EwVnUd5eAMMJKDIChygyIQpAoEh4iIJ5Jlg" +;
		"XIcgCXpIGoFwnGEQh6BEKBgmMIICHgIJCAiUAzgyUoAhwJohkiRgygwYpiGoKwzGIcgKCkNQNCMRIbCYCRYk4QoMiOchWDwNBjhiJJaDYTRiGiFwlCQAhOE8JBJHITIRgwZRZFCFCZBkOIUhKTRpCWAwgGYQ4El4NxlBifIWCcCYCFoaoMGaKYyG6GxlBmGJdhkCAWBIeA5g4U4QhMJAImkPIShRVxGgQJRlCIUISh+SJpnCZIeBgFgiHgO4OlOMINCISByECDQikkGhuh2JwpmqBogCKaYiC6FwhmkQ4yHgYgYiaHopiuaRakCbIsisSpGjYOwaHYKYMCkK5CA2IxrCwCwFigaJrkLTI6lcdANAEgIA=")
			oAppearance:Add(1,"CP:3 -2 -2 2 2")
			oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABEICg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSBcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfDxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJeg8X4rluaZ3niGB+AQHx/EyShjjEVYqiUR5rnmex/GAB5+AIf4gEeXJFHyXZ3gCTAygyAociMKBKEKBIeCiCZyHYFAnCE" +;
		"eBkh+BghFgRIegOCgYCySAgh4CAkgINAMmMNIgCcCYjn4LoLmMCJGDKC5ijIagoDMYhCAoJg1A0IxEhsJgJFiThChCY5yFYPA0GOGIYloNhNGIaIXCUJACE4TwkEkchOFSFYlFkXhUCUCQZEYTglCSMxaEkYJIBmFJhDeDZZEYPwlgmQhghaGqVDoa4bGaeY6FGGZNlmFIBGEJ4jhiZQ5AkMhAg6E5JCkRoGCUSQ6B6CYiSCBIOh+DhJmmARiWQOJtDsCJSCSBwkXSLIRicaZ6HqIIomoIguhwIpphIHoWDsJ4mCGChpmqOpGheLIOkqUo2iya4DjGJxihiQoSj4IJaDaMpCjCWoGg6PgpBiQ4tHcQJQBAgI=")
			oAppearance:Add(2,"CP:4 -2 -2 2 2")
		oG2antt:LinesAtRoot := 1/*exGroupLinesAtRoot*/
		oG2antt:HasButtons := 4/*exCustom*/
		oG2antt:SetProperty("HasButtonsCustom",.F.,16777216)
		oG2antt:SetProperty("HasButtonsCustom",.T.,33554432)
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Root 1")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Root 2")
			oItems:InsertItem(h,,"Child")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2030
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(1,"XP:TREEVIEW 2 1")
			oAppearance:Add(2,"XP:TREEVIEW 2 2")
		oG2antt:SetProperty("Background",180/*exTreeGlyphOpen*/,0x1000000)
		oG2antt:SetProperty("Background",181/*exTreeGlyphClose*/,0x2000000)
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Root 1")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Root 2")
			oItems:InsertItem(h,,"Child")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2029
How can I find if the control is running in DPI mode
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		DevOut( Transform(oG2antt:FormatABC("dpi = 1 ? `normal/stretch mode` : `dpi mode`"),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2028
How can I change the visual appearance of the +/- buttons (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABDwCg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSBcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfDxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJegef4zluaJ3nqPJeCYH4BAeX5TDLBpVGqKRRnwf4flefZtHsX54BYAR/F+EwVnUd5eAMMJKDIChygyIQpAoEh4iIJ5Jlg" +;
		"XIcgCXpIGoFwnGEQh6BEKBgmMIICHgIJCAiUAzgyUoAhwJohkiRgygwYpiGoKwzGIcgKCkNQNCMRIbCYCRYk4QoMiOchWDwNBjhiJJaDYTRiGiFwlCQAhOE8JBJHITIRgwZRZFCFCZBkOIUhKTRpCWAwgGYQ4El4NxlBifIWCcCYCFoaoMGaKYyG6GxlBmGJdhkCAWBIeA5g4U4QhMJAImkPIShRVxGgQJRlCIUISh+SJpnCZIeBgFgiHgO4OlOMINCISByECDQikkGhuh2JwpmqBogCKaYiC6FwhmkQ4yHgYgYiaHopiuaRakCbIsisSpGjYOwaHYKYMCkK5CA2IxrCwCwFigaJrkLTI6lcdANAEgIA=")
			oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABEICg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSBcQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfDxXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4llWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJeg8X4rluaZ3niGB+AQHx/EyShjjEVYqiUR5rnmex/GAB5+AIf4gEeXJFHyXZ3gCTAygyAociMKBKEKBIeCiCZyHYFAnCE" +;
		"eBkh+BghFgRIegOCgYCySAgh4CAkgINAMmMNIgCcCYjn4LoLmMCJGDKC5ijIagoDMYhCAoJg1A0IxEhsJgJFiThChCY5yFYPA0GOGIYloNhNGIaIXCUJACE4TwkEkchOFSFYlFkXhUCUCQZEYTglCSMxaEkYJIBmFJhDeDZZEYPwlgmQhghaGqVDoa4bGaeY6FGGZNlmFIBGEJ4jhiZQ5AkMhAg6E5JCkRoGCUSQ6B6CYiSCBIOh+DhJmmARiWQOJtDsCJSCSBwkXSLIRicaZ6HqIIomoIguhwIpphIHoWDsJ4mCGChpmqOpGheLIOkqUo2iya4DjGJxihiQoSj4IJaDaMpCjCWoGg6PgpBiQ4tHcQJQBAgI=")
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:SetProperty("Background",180/*exTreeGlyphOpen*/,0x1000000)
		oG2antt:SetProperty("Background",181/*exTreeGlyphClose*/,0x2000000)
		oG2antt:Columns():Add("Column")
		oItems := oG2antt:Items()
			h := oItems:AddItem("Root 1")
			oItems:InsertItem(h,,"Child 1")
			oItems:InsertItem(h,,"Child 2")
			oItems:SetProperty("ExpandItem",h,.T.)
			h := oItems:AddItem("Root 2")
			oItems:InsertItem(h,,"Child")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2027
How can I add a summary bar once the user group by a column

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	LOCAL l
	oItems := oG2antt:Items()
		oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
		oItems:AddBar(Item,"Summary","12/02/2017","12/02/2017")
		oItems:DefineSummaryBars(Item,"",-3,"")
		l := oItems:GroupItem(Item)
		oItems:SetProperty("CellSingleLine",Item,l,0/*exCaptionWordWrap*/)
		oItems:SetProperty("CellBold",Item,l,.T.)
		oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
	oG2antt:Chart():SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oG2antt:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABOUGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADCMQwAFBIbhrE4ZBjHGQRUgyI43RhHUBzVIUBxDEaTZLlEYJBgeHYhDJPcaUVDcWQHGyeZwjSgpKoWSJIU5NcggPDgEwTKCmKlTAKoSzJMyEmwWRAdVTZLSEaxierKPhyWT/XgAF4PfDFKRXFqXY5mKZJFqKOI8TxINgxPQMGyrBqraLqKwQGrGCQKSBhUZ3dS2JR3OSlYRuQAMVgOXoDZhPWZXbDtSzPE63NgtOR5DiGWalABoeoxRa9cz3ViCJSrGTqIoINIzZLHFQbPpdAYdP6BeIjXhhZxBBuLZXmEOh9CcNoni2N4MjWVodh+DpfBeLJinsWR9AyYwVAkGBhEAFphGiRogDEGBamkFgtjcZgHiMbgehYaQhAIEIREAaQYkcQZUHIGRUGQDBOEaBAhDYDxGkMZAkCg" +;
		"eoagYZAYEYAYIAWGhemICIFj8WIiCiFR5gkIhogmBoKGKJx2C6C5hniMgggqYwog0UoNGMZJiDiCZRgOLY0ECUAQICA==")
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,342)
			oBar := oChart:Bars:Item("Summary")
				oBar:StartShape := 0/*exShapeIconEmpty*/
				oBar:EndShape := 0/*exShapeIconEmpty*/
				oBar:Shape := 1/*exShapeSolid*/
				oBar:SetProperty("Color",0x1000000)
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=%513%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumn := oColumns:Add("Pos")
				oColumn:FormatColumn := "1 pos ``"
				oColumn:AllowGroupBy := .F.
				oColumn:Position := 0
				oColumn:Width := 48
				oColumn:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:AllowGroupBy := .T.
		oG2antt:HasLines := 0/*exNoLine*/
		oG2antt:LinesAtRoot := 0/*exNoLinesAtRoot*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2026
Is it possible to display no +/- button for grouped items

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	LOCAL l
	oItems := oG2antt:Items()
		oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
		oItems:AddBar(Item,"Progress","12/02/2017","12/02/2017")
		oItems:DefineSummaryBars(Item,"",-3,"")
		l := oItems:GroupItem(Item)
		oItems:SetProperty("CellSingleLine",Item,l,0/*exCaptionWordWrap*/)
		oItems:SetProperty("CellBold",Item,l,.T.)
		oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
	oG2antt:Chart():SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,342)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumn := oColumns:Add("Pos")
				oColumn:FormatColumn := "1 pos ``"
				oColumn:AllowGroupBy := .F.
				oColumn:Position := 0
				oColumn:Width := 48
				oColumn:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:AllowGroupBy := .T.
		oG2antt:HasLines := 0/*exNoLine*/
		oG2antt:LinesAtRoot := 0/*exNoLinesAtRoot*/
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:SortOrder := 1/*SortAscending*/
			oColumn1:Alignment := 1/*CenterAlignment*/
			oColumn1:SetProperty("Def",4/*exCellBackColor*/,15790320)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2025
How can I change the label, caption or the formula of the grouped items

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:AddBar(Item,"Progress","12/02/2017","12/02/2017")
		oItems:DefineSummaryBars(Item,"",-3,"")
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,342)
		oColumns := oG2antt:Columns()
			oColumn := oColumns:Add("C1")
				oColumn:GroupByTotalField := ""
				oColumn:GroupByFormatCell := "upper(value)"
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumn1 := oColumns:Add("Pos")
				oColumn1:FormatColumn := "1 pos ``"
				oColumn1:AllowGroupBy := .F.
				oColumn1:Position := 0
				oColumn1:Width := 48
				oColumn1:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:AllowGroupBy := .T.
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
		oG2antt:Columns:Item(0):SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2024
How can I change the aspect of grouped items

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	LOCAL l
	oItems := oG2antt:Items()
		oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
		oItems:AddBar(Item,"Progress","12/02/2017","12/02/2017")
		oItems:DefineSummaryBars(Item,"",-3,"")
		l := oItems:GroupItem(Item)
		oItems:SetProperty("CellSingleLine",Item,l,0/*exCaptionWordWrap*/)
		oItems:SetProperty("CellBold",Item,l,.T.)
		oItems:SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
	oG2antt:Chart():SetProperty("ItemBackColor",Item,AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,342)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumn := oColumns:Add("Pos")
				oColumn:FormatColumn := "1 pos ``"
				oColumn:AllowGroupBy := .F.
				oColumn:Position := 0
				oColumn:Width := 48
				oColumn:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:AllowGroupBy := .T.
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
		oG2antt:Columns:Item(0):SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2023
How can I collapse all items when the user performs a grouping

PROCEDURE OnAddGroupItem(oG2antt,Item)
	LOCAL oItems
	oItems := oG2antt:Items()
		oItems:SetProperty("ExpandItem",Item,.F.)
		oItems:SetProperty("ItemDividerLine",Item,0/*EmptyLine*/)
		oItems:AddBar(Item,"Progress","12/02/2017","12/02/2017")
		oItems:DefineSummaryBars(Item,"",-3,"")
RETURN

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddGroupItem := {|Item| OnAddGroupItem(oG2antt,Item)} /*Occurs after a new Group Item has been inserted to Items collection.*/
		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,342)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumn := oColumns:Add("Pos")
				oColumn:FormatColumn := "1 pos ``"
				oColumn:AllowGroupBy := .F.
				oColumn:Position := 0
				oColumn:Width := 48
				oColumn:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "Drag a <b>column</b> header here to group by that column."
		oG2antt:AllowGroupBy := .T.
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
		oG2antt:Columns:Item(0):SortOrder := 1/*SortAscending*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2022
Is it possible to select columns that user can drop to the sort bar, when using the Group By feature

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/10/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oColumns
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,342)
		oColumns := oG2antt:Columns()
			oColumns:Add("C1")
			oColumns:Add("C2")
			oColumns:Add("C3")
			oColumn := oColumns:Add("Pos")
				oColumn:FormatColumn := "1 pos ``"
				oColumn:AllowGroupBy := .F.
				oColumn:Position := 0
				oColumn:Width := 48
				oColumn:AllowSizing := .F.
		oG2antt:SortBarVisible := .T.
		oG2antt:SortBarCaption := "<fgcolor=FF0000>Try to drag the Pos column here."
		oG2antt:AllowGroupBy := .T.
		oItems := oG2antt:Items()
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item A")
			oItems:SetProperty("CellValue",h,1,"SubItem A.1")
			oItems:SetProperty("CellValue",h,2,"SubItem A.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"SubItem B.1")
			oItems:SetProperty("CellValue",h,2,"SubItem B.2")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2021
How can I filter for the type of the bars I have in my chart

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oBar,oBar1,oBar2
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "11/28/2017"
			oChart:SetProperty("PaneWidth",.F.,0)
			oBar := oChart:Bars:Item("Task")
				oBar:SetProperty("Def",3/*exBarCaption*/,"<%=%0%>")
				oBar:SetProperty("Def",4/*exBarHAlignCaption*/,18)
			oBar1 := oChart:Bars():CallMethod("Copy","Task","GTask")
				oBar1:SetProperty("Def",3/*exBarCaption*/,"<%=%0%>")
				oBar1:SetProperty("Def",4/*exBarHAlignCaption*/,18)
				oBar1:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
			oBar2 := oChart:Bars():CallMethod("Copy","Task","RTask")
				oBar2:SetProperty("Def",3/*exBarCaption*/,"<%=%0%>")
				oBar2:SetProperty("Def",4/*exBarHAlignCaption*/,18)
				oBar2:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oChart:ColumnsFormatLevel := "0"
		oG2antt:OnResizeControl := 129/*exDisableSplitter+exResizeChart*/
		oColumn := oG2antt:Columns():Add("Default")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Type")
			oColumn1:SetProperty("Def",19/*exCellValueToItemBarKey*/,"")
			oColumn1:SetProperty("Def",18/*exCellValueToItemBarProperty*/,0)
			oColumn1:Visible := .F.
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oItems := oG2antt:Items()
			oItems:AllowCellValueToItemBar := .T.
			oItems:AddBar(oItems:AddItem("Item 1"),"Task","12/04/2017","12/12/2017")
			oItems:AddBar(oItems:AddItem("Item 2"),"GTask","12/04/2017","12/12/2017")
			oItems:AddBar(oItems:AddItem("Item 3"),"RTask","12/04/2017","12/12/2017")
			oItems:AddBar(oItems:AddItem("Item 4"),"Task","12/04/2017","12/12/2017")
			oItems:AddBar(oItems:AddItem("Item 5"),"GTask","12/04/2017","12/12/2017")
			oItems:AddBar(oItems:AddItem("Item 6"),"RTask","12/04/2017","12/12/2017")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(( ( all replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oG2antt:FilterBarPromptVisible := 2579/*exFilterBarCompact+exFilterBarShowCloseIfRequired+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn2 := oG2antt:Columns:Item(1)
			oColumn2:FilterType := 240/*exFilter*/
			oColumn2:Filter := "GTask|RTask"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2020
How can I display the control's filter bar in the Items section only, as it was displayed before

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Pos")
			oColumn2:AllowSizing := .F.
			oColumn2:AllowSort := .F.
			oColumn2:Width := 32
			oColumn2:FormatColumn := "1 apos ``"
			oColumn2:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			oItems:SetProperty("CellValue",oItems:AddItem("Item B"),1,"Sub-Item B")
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarPromptVisible := 4096/*exFilterBarShort*/
		oColumn3 := oG2antt:Columns:Item(1)
			oColumn3:FilterType := 3/*exPattern*/
			oColumn3:Filter := "*B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2019
FilterBarCaption ALL Keyword ( sample 2, result )

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL i
	i := oG2antt:FormatABC("value + 1",oG2antt:Items:ItemToIndex(Item))
	oG2antt:Items():SetProperty("CellImage",Item,3,i)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
	LOCAL oEditor
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Check")
			oEditor := oColumn2:Editor()
				oEditor:EditType := 19/*CheckValueType*/
				oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterType := 6/*exCheck*/
		oColumn3 := oG2antt:Columns():Add("Image")
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterType := 10/*exImage*/
			oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oColumn4 := oG2antt:Columns():Add("Pos")
			oColumn4:AllowSizing := .F.
			oColumn4:AllowSort := .F.
			oColumn4:Width := 32
			oColumn4:FormatColumn := "1 apos ``"
			oColumn4:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"Sub-Item B")
			oItems:SetProperty("CellState",h,2,1)
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(( ( all replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oG2antt:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn5 := oG2antt:Columns:Item(0)
			oColumn5:FilterType := 240/*exFilter*/
			oColumn5:Filter := "Item A|Item B"
		oG2antt:Columns:Item(2):Filter := Transform(1,"")
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2018
FilterBarCaption ALL Keyword ( sample 1 )

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL i
	i := oG2antt:FormatABC("value + 1",oG2antt:Items:ItemToIndex(Item))
	oG2antt:Items():SetProperty("CellImage",Item,3,i)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
	LOCAL oEditor
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Check")
			oEditor := oColumn2:Editor()
				oEditor:EditType := 19/*CheckValueType*/
				oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterType := 6/*exCheck*/
		oColumn3 := oG2antt:Columns():Add("Image")
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterType := 10/*exImage*/
			oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oColumn4 := oG2antt:Columns():Add("Pos")
			oColumn4:AllowSizing := .F.
			oColumn4:AllowSort := .F.
			oColumn4:Width := 32
			oColumn4:FormatColumn := "1 apos ``"
			oColumn4:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"Sub-Item B")
			oItems:SetProperty("CellState",h,2,1)
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "all"
		oG2antt:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn5 := oG2antt:Columns:Item(0)
			oColumn5:FilterType := 240/*exFilter*/
			oColumn5:Filter := "Item A|Item B"
		oG2antt:Columns:Item(2):Filter := Transform(1,"")
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2017
FilterBarCaption ALLUI Keyword ( sample 2, result )

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL i
	i := oG2antt:FormatABC("value + 1",oG2antt:Items:ItemToIndex(Item))
	oG2antt:Items():SetProperty("CellImage",Item,3,i)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
	LOCAL oEditor
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Check")
			oEditor := oColumn2:Editor()
				oEditor:EditType := 19/*CheckValueType*/
				oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterType := 6/*exCheck*/
		oColumn3 := oG2antt:Columns():Add("Image")
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterType := 10/*exImage*/
			oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oColumn4 := oG2antt:Columns():Add("Pos")
			oColumn4:AllowSizing := .F.
			oColumn4:AllowSort := .F.
			oColumn4:Width := 32
			oColumn4:FormatColumn := "1 apos ``"
			oColumn4:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"Sub-Item B")
			oItems:SetProperty("CellState",h,2,1)
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(( ( allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oG2antt:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn5 := oG2antt:Columns:Item(0)
			oColumn5:FilterType := 240/*exFilter*/
			oColumn5:Filter := "Item A|Item B"
		oG2antt:Columns:Item(2):Filter := Transform(1,"")
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2016
FilterBarCaption ALLUI Keyword ( sample 1 )

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL i
	i := oG2antt:FormatABC("value + 1",oG2antt:Items:ItemToIndex(Item))
	oG2antt:Items():SetProperty("CellImage",Item,3,i)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
	LOCAL oEditor
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Check")
			oEditor := oColumn2:Editor()
				oEditor:EditType := 19/*CheckValueType*/
				oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterType := 6/*exCheck*/
		oColumn3 := oG2antt:Columns():Add("Image")
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterType := 10/*exImage*/
			oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oColumn4 := oG2antt:Columns():Add("Pos")
			oColumn4:AllowSizing := .F.
			oColumn4:AllowSort := .F.
			oColumn4:Width := 32
			oColumn4:FormatColumn := "1 apos ``"
			oColumn4:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"Sub-Item B")
			oItems:SetProperty("CellState",h,2,1)
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "allui"
		oG2antt:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn5 := oG2antt:Columns:Item(0)
			oColumn5:FilterType := 240/*exFilter*/
			oColumn5:Filter := "Item A|Item B"
		oG2antt:Columns:Item(2):Filter := Transform(1,"")
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2015
FilterBarCaption AVAILABLE Keyword ( sample 2, result )

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL i
	i := oG2antt:FormatABC("value + 1",oG2antt:Items:ItemToIndex(Item))
	oG2antt:Items():SetProperty("CellImage",Item,3,i)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
	LOCAL oEditor
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Check")
			oEditor := oColumn2:Editor()
				oEditor:EditType := 19/*CheckValueType*/
				oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterType := 6/*exCheck*/
		oColumn3 := oG2antt:Columns():Add("Image")
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterType := 10/*exImage*/
			oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oColumn4 := oG2antt:Columns():Add("Pos")
			oColumn4:AllowSizing := .F.
			oColumn4:AllowSort := .F.
			oColumn4:Width := 32
			oColumn4:FormatColumn := "1 apos ``"
			oColumn4:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"Sub-Item B")
			oItems:SetProperty("CellState",h,2,1)
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(( ( value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` ) + ` ` + ( available replace `[` with `<bgcolor=C0C0C0><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` replace `<s>` with `` replace `</s>` with `` ) + `<fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
		oG2antt:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn5 := oG2antt:Columns:Item(0)
			oColumn5:FilterType := 240/*exFilter*/
			oColumn5:Filter := "Item A|Item B"
		oG2antt:Columns:Item(2):Filter := Transform(1,"")
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2014
FilterBarCaption AVAILABLE Keyword ( sample 1 )

PROCEDURE OnAddItem(oG2antt,Item)
	LOCAL i
	i := oG2antt:FormatABC("value + 1",oG2antt:Items:ItemToIndex(Item))
	oG2antt:Items():SetProperty("CellImage",Item,3,i)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
	LOCAL oEditor
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Check")
			oEditor := oColumn2:Editor()
				oEditor:EditType := 19/*CheckValueType*/
				oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			oColumn2:DisplayFilterButton := .T.
			oColumn2:DisplayFilterPattern := .F.
			oColumn2:FilterType := 6/*exCheck*/
		oColumn3 := oG2antt:Columns():Add("Image")
			oColumn3:DisplayFilterButton := .T.
			oColumn3:FilterType := 10/*exImage*/
			oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
		oColumn4 := oG2antt:Columns():Add("Pos")
			oColumn4:AllowSizing := .F.
			oColumn4:AllowSort := .F.
			oColumn4:Width := 32
			oColumn4:FormatColumn := "1 apos ``"
			oColumn4:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellValue",h,1,"Sub-Item B")
			oItems:SetProperty("CellState",h,2,1)
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "value + ` ` + available"
		oG2antt:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn5 := oG2antt:Columns:Item(0)
			oColumn5:FilterType := 240/*exFilter*/
			oColumn5:Filter := "Item A|Item B"
		oG2antt:Columns:Item(2):Filter := Transform(1,"")
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2013
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 3, results )

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Pos")
			oColumn2:AllowSizing := .F.
			oColumn2:AllowSort := .F.
			oColumn2:Width := 32
			oColumn2:FormatColumn := "1 apos ``"
			oColumn2:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			oItems:SetProperty("CellValue",oItems:AddItem("Item B"),1,"Sub-Item B")
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "(`<b>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )) replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`"
		oG2antt:FilterBarPromptVisible := 256/*exFilterBarToggle*/
		oColumn3 := oG2antt:Columns:Item(0)
			oColumn3:FilterType := 240/*exFilter*/
			oColumn3:Filter := "Item A|Item B"
		oColumn4 := oG2antt:Columns:Item(1)
			oColumn4:FilterType := 3/*exPattern*/
			oColumn4:Filter := "*B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2012
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 2 )

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Pos")
			oColumn2:AllowSizing := .F.
			oColumn2:AllowSort := .F.
			oColumn2:Width := 32
			oColumn2:FormatColumn := "1 apos ``"
			oColumn2:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			oItems:SetProperty("CellValue",oItems:AddItem("Item B"),1,"Sub-Item B")
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`"
		oG2antt:FilterBarPromptVisible := 256/*exFilterBarToggle*/
		oColumn3 := oG2antt:Columns:Item(0)
			oColumn3:FilterType := 240/*exFilter*/
			oColumn3:Filter := "Item A|Item B"
		oColumn4 := oG2antt:Columns:Item(1)
			oColumn4:FilterType := 3/*exPattern*/
			oColumn4:Filter := "*B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2011
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 1 )

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oColumn := oG2antt:Columns():Add("Col-1")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Col-2")
			oColumn1:DisplayFilterButton := .T.
			oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn2 := oG2antt:Columns():Add("Pos")
			oColumn2:AllowSizing := .F.
			oColumn2:AllowSort := .F.
			oColumn2:Width := 32
			oColumn2:FormatColumn := "1 apos ``"
			oColumn2:Position := 0
		oItems := oG2antt:Items()
			oItems:SetProperty("CellValue",oItems:AddItem("Item A"),1,"Sub-Item A")
			oItems:SetProperty("CellValue",oItems:AddItem("Item B"),1,"Sub-Item B")
			oItems:SetProperty("CellValue",oItems:AddItem("Item C"),1,"Sub-Item C")
		oG2antt:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oG2antt:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oG2antt:Description(11/*exFilterBarAnd*/)),""))
		oG2antt:FilterBarCaption := "value replace `[` with `<fgcolor=808080>[` replace `]` with `]</fgcolor>`"
		oG2antt:FilterBarPromptVisible := 256/*exFilterBarToggle*/
		oColumn3 := oG2antt:Columns:Item(0)
			oColumn3:FilterType := 240/*exFilter*/
			oColumn3:Filter := "Item A|Item B"
		oColumn4 := oG2antt:Columns:Item(1)
			oColumn4:FilterType := 3/*exPattern*/
			oColumn4:Filter := "*B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2010
Is it possible to automatically displays the control's filter label to the right

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oColumn := oG2antt:Columns():Add("Item")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Pos")
			oColumn1:AllowSizing := .F.
			oColumn1:AllowSort := .F.
			oColumn1:Width := 32
			oColumn1:FormatColumn := "1 apos ``"
			oColumn1:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarCaption := "`<r>` + value"
		oG2antt:FilterBarPromptVisible := 1280/*exFilterBarShowCloseOnRight+exFilterBarToggle*/
		oColumn2 := oG2antt:Columns:Item(0)
			oColumn2:FilterType := 240/*exFilter*/
			oColumn2:Filter := "Item B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2009
How can I get the number of results/items being shown in the control's filter bar (sample 4)

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oColumn := oG2antt:Columns():Add("Item")
			oColumn:DisplayFilterButton := .T.
			oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
		oColumn1 := oG2antt:Columns():Add("Pos")
			oColumn1:AllowSizing := .F.
			oColumn1:AllowSort := .F.
			oColumn1:Width := 32
			oColumn1:FormatColumn := "1 apos ``"
			oColumn1:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:FilterBarPrompt := Transform(oG2antt:FormatABC("`<b>` + value",oG2antt:FilterBarPrompt()),"")
		oG2antt:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )"
		oG2antt:FilterBarPromptVisible := 3591/*exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2008
How can I get the number of results being shown in the control's filter bar (sample 3)

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : ``)"
		oG2antt:FilterBarPromptVisible := 2055/*exFilterBarCompact+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:FilterType := 240/*exFilter*/
			oColumn1:Filter := "Item A|Item B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2007
How can I get the number of results being shown in the control's filter bar (sample 2, compact)

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? `<off -4> ` + abs(matchitemcount + 1) + ` result(s)` : ``)"
		oG2antt:FilterBarPromptVisible := 2071/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:FilterType := 240/*exFilter*/
			oColumn1:Filter := "Item A|Item B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2006
How can I get the number of results being shown in the control's filter bar (sample 1)

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:FilterBarCaption := "`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)"
		oG2antt:FilterBarPromptVisible := 7/*exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:FilterType := 240/*exFilter*/
			oColumn1:Filter := "Item A|Item B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2005
FilterBarCaption Predefined Keywords

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

PROCEDURE OnAfterExpandItem(oG2antt,Item)
	oG2antt:Refresh()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1,oColumn2
	LOCAL oEditor
	LOCAL oItems
	LOCAL h

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/
		oG2antt:AfterExpandItem := {|Item| OnAfterExpandItem(oG2antt,Item)} /*Fired after an item is expanded (collapsed).*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:LinesAtRoot := -1/*exLinesAtRoot*/
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Check")
			oEditor := oColumn:Editor()
				oEditor:EditType := 19/*CheckValueType*/
				oEditor:SetProperty("Option",17/*exCheckValue2*/,1)
			oColumn:DisplayFilterButton := .T.
			oColumn:DisplayFilterPattern := .F.
			oColumn:FilterType := 6/*exCheck*/
		oColumn1 := oG2antt:Columns():Add("Pos")
			oColumn1:AllowSizing := .F.
			oColumn1:AllowSort := .F.
			oColumn1:Width := 32
			oColumn1:FormatColumn := "1 apos ``"
			oColumn1:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			h := oItems:AddItem("Item B")
			oItems:SetProperty("CellState",oItems:InsertItem(h,,"Sub-Item B1"),1,1)
			oItems:InsertItem(h,,"Sub-Item B2")
			oItems:SetProperty("ExpandItem",h,.T.)
			oItems:AddItem("Item C")
		oG2antt:FilterInclude := 1/*exItemsWithChilds*/
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:FilterBarCaption := "`<fgcolor=0000FF><i>value/current</i></fgcolor>: <fgcolor=808080>` + value + `</fgcolor>` + `<br><fgcolor=0000FF><i>available</i></fgcolor>: ` + available + `<br><fgcolor=0000FF><i>allui</i></fgcolor>: ` + allui + `<br><fgcolor=0000FF><i>all</i></fgcolor>: ` + all + `<br><fgcolor=0000FF><i>itemcount</i></fgcolor>: <fgcolor=808080>` + itemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>visibleitemcount</i></fgcolor>: <fgcolor=808080>` + visibleitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>matchitemcount</" +;
		"i></fgcolor>: <fgcolor=808080>` + matchitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>promptpattern</i></fgcolor>: <fgcolor=808080>` + promptpattern + `</fgcolor>`+ `<br><fgcolor=0000FF><i>leafitemcount</i></fgcolor>: <fgcolor=808080>` + leafitemcount + `</fgcolor>`"
		oG2antt:FilterBarPromptPattern := "B"
		oG2antt:FilterBarPromptVisible := 7/*exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn2 := oG2antt:Columns:Item(0)
			oColumn2:FilterType := 240/*exFilter*/
			oColumn2:Filter := "Item A|Item B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2004
I am using filter prompt feature, and also column's filter, just wondering if possible to compact displaying the filter bar so it won't show on multiple lines

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn,oColumn1
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarFont := oG2antt:Font()
		oG2antt:FilterBarCaption := "`<r><i><fgcolor=808080><upline><solidline><sha ;;0>` + value"
		oG2antt:FilterBarPromptPattern := "B"
		oG2antt:FilterBarPromptVisible := 2067/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
		oColumn1 := oG2antt:Columns:Item(0)
			oColumn1:FilterType := 240/*exFilter*/
			oColumn1:Filter := "Item A|Item B"
		oG2antt:ApplyFilter()
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2003
Just wondering if it is possible to show the filter bar's close button on the right ( sample 2 )

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarPromptVisible := 1281/*exFilterBarShowCloseOnRight+exFilterBarToggle+exFilterBarPromptVisible*/
		oG2antt:FilterBarPrompt := Transform(oG2antt:FormatABC("`<r>` + value",oG2antt:FilterBarPrompt()),"")
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2002
Just wondering if it is possible to show the filter bar's close button on the right ( sample 1 )

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oChart
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oG2antt:RightToLeft := .T.
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarPromptVisible := 257/*exFilterBarToggle+exFilterBarPromptVisible*/
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2001
How can I change the visual appearance of the filter bar's close button (EBN)

PROCEDURE OnAddItem(oG2antt,Item)
	oG2antt:Items():AddBar(Item,"Task","12/04/2017","12/14/2017")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oG2antt
	LOCAL oAppearance
	LOCAL oChart
	LOCAL oColumn
	LOCAL oItems

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oG2antt := XbpActiveXControl():new( oForm:drawingArea )
	oG2antt:CLSID  := "Exontrol.G2antt.1" /*{CD481F4D-2D25-4759-803F-752C568F53B7}*/
	oG2antt:create(,, {10,60},{610,370} )

		oG2antt:AddItem := {|Item| OnAddItem(oG2antt,Item)} /*Occurs after a new Item has been inserted to Items collection.*/

		oG2antt:BeginUpdate()
		oChart := oG2antt:Chart()
			oChart:LevelCount := 2
			oChart:FirstVisibleDate := "12/02/2017"
			oChart:SetProperty("PaneWidth",.F.,256)
		oAppearance := oG2antt:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABHQDg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLOg7IJjyI4/SJAYCydKAWhxIaZKJHCZoEDaTAADCNVAQp6MEIJVbVEI0e79OgBLp/Z7kECIJJAaRjHQdJxGLA8EhtCQhCZteK6SgMKJYXhWQYRXI1JwvMBrWrdQjiOYELQtMKmSZNLYGG4dR5SVJbcYhSYsRRFMoyDIOXYDLKsdYqSpXIThObEGgaPqJYjsUjCMKnR7HVIURrBPC9TBPE69ZgmC6ucKPX51ShKFaBWDZcwFAS+UBuYCAILiEAQGZ1XT8OROicbgJgSTJRlCaZeDsHY7QGR4xkSYp3CaExZAQMgalQYAwjCAAfBANxcA2TgKAUOpDCGFhKg0RpXCwCwDHQHQHEyAIkCkOhbFOGA8A8DohBgRg9AccZcn8EpEjMLI2C2" +;
		"DYxAgQgvAIUIVkoAAPBQDJlECTZ3CCYwDACQwUA8A5MCAWAWDiQi4l8aQOEgLJuBgBgDmYFAzEoIoIl0WALgKYJbBABADAAHgHg8VAMmqCQQDMXABAATYwTmNwBDATJXAiAgjHmNQ5lgQ5QEQEQMmcWg/GwD5ylyNw2gMcJcjsBgBgOQQDDhRpVAMMwnDBFw1B0Ax8D0DxOmmJJIGQTY5hGMAwkwM4CAYLZAmAOJnAqAojiIGg6iieYkmeAYOHaKJDCyCwjH6AoggsQpQliAJLhgaJ0CESBTnyDwjk+cg4g4P5IHIHJ+BWRRzlYWAxiOUxihsY4KjKLJRGqC44FCegkkkM58iAKAPnIWIWD8SRSFSfQnkmewUhYP4GiGKJ7G0TIbCSUoggqUo0lAQ4LnEcBcD8Coiiif4nE+eAAn2HpOkcFJqi4T5SkyMw/kqQown8IBIBOdA+A+DJrBqVxXEqYo4lCApLhGHBnD8S4ymyfxmg+cwQkQP5egOUZIWoEA" +;
		"kjIeIPBMBJBD+TBjBifwvkuc58hQJQPmFrYykkchclSApKjGOBuD+TRDFCfw3mmIxNi8FxFlOXhVC4aYDFyPgvg2YBcBcLZGCGCJ0DSLRzGSWQ/lmY5+mEP5gmMDBZRSMRsFsOxMhMJJ/DsTpTnwaQaE+N5ojuNhdEYNI5C4TZJO1GRDmCaxnA2Yx4n8IpIjOTBQBQC5TgyYw7gUYRYikC0BYRwsDQBoB8eA6Q2hsE0BUXgywZtYCyHMKwnxSAhAQHkIQhRrBaDsCwA4ERiB2EWAIYIXhhiVEgAEUYwwYjyASLge4FhHgRDkM8OQih0jWPkGgBBAQ")
		oG2antt:Columns():Add("Item"):DisplayFilterButton := .T.
		oColumn := oG2antt:Columns():Add("Pos")
			oColumn:AllowSizing := .F.
			oColumn:AllowSort := .F.
			oColumn:Width := 32
			oColumn:FormatColumn := "1 apos ``"
			oColumn:Position := 0
		oItems := oG2antt:Items()
			oItems:AddItem("Item A")
			oItems:AddItem("Item B")
			oItems:AddItem("Item C")
		oG2antt:FilterBarPromptVisible := 257/*exFilterBarToggle+exFilterBarPromptVisible*/
		oG2antt:SetProperty("Background",1/*exFooterFilterBarButton*/,0x1000000)
		oG2antt:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN